Ver Mensaje Individual
  #6  
Antiguo 02-03-2015
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola Fidel, que bueno verte más activo.

Estoy lejos de ser un experto en Firebird, pero me gustaría recordar que se usa Suspend cuando el procedimiento almacenado devolverá un cursor, es decir, cuando se va a consultar como si fuera una tabla (Select / subselect). Y cada vez que se ejecuta la instrucción Suspend se está "creando" y contestando al cliente una fila de resultados (con los valores que en ese momento tengan los parámetros de devolución).

En cambio, si el procedimiento ha de devolver un sólo dato o grupo de datos (no varias filas de datos), entonces basta con asignar los valores correspondientes a los parámetros de devolución, sin usar Suspend. Pero, en este caso, naturalmente el procedimiento no puede ser tratado como si fuera una tabla.

De manera predeterminada, los parámetros de devolución siempre tienen un valor de Null.

Por otra parte, Fidel, el "NOT NULL" en la cabecera no es para indicar valor predeterminado. Según entiendo es, como en el caso de la definición de tablas, para indicar que el parámetro de entrada en cuestión no debe ser Null.

Este artículo de la Fundación explica cómo de declaran realmente los parámetros con valor predeterminado (buscar ahí el apartado Default argument values).

Finalmente, dos cosas más. Enhorabuena por los 1100 mensajes , y algo igual de importante: No es buena práctica tratar de adaptar elementos de una base de datos a los elementos del lado cliente (como etiquetas o rejillas de la interfaz de usuario), ya que la capa de base de datos desconoce (y así debe ser) para qué clientes trabaja. Es la capa cliente la que tiene que adaptarse a la base de datos. Si un parámetro de devolución viene nulo, siempre habrá algún evento o propiedad en Delphi para convertirlo en una cosa aceptable.

Saludos.
Responder Con Cita