Procedimientos con parámetros de sallida.
Comenzado por
poliburro
, feb 12 2015 09:48
6 respuestas en este tema
#1
Escrito 12 febrero 2015 - 09:48
Hola amigos.
¿Cómo se declaran los procedimientos de salida en Firebird y como se accede a su valor cuando se ejecutan en delphi?
Saludos
¿Cómo se declaran los procedimientos de salida en Firebird y como se accede a su valor cuando se ejecutan en delphi?
Saludos
#2
Escrito 13 febrero 2015 - 01:36
Creo que se pueden declarar asi:
Y luego desde un componente TSQLStoredProc puedes hacer lo siguiente:
No lo he probado pero creo que por ahí van los tiros
Saludos
delphi
create procedure NuevoOid returns (ID integer) as ...
Y luego desde un componente TSQLStoredProc puedes hacer lo siguiente:
delphi
Result := SQLStoredProc1.ParamByName('ID').Value;
No lo he probado pero creo que por ahí van los tiros
Saludos
#3
Escrito 13 febrero 2015 - 04:10
Hola.
Lo más sencillo es crear los procedimientos almacenados desde un gestor como IB-Expert, que veo en otro hilo que ya tienes instalado (recuerda que hay una versión Personal Edition que es completamente gratuita).
Declarar los parámetros como entrada o salida es muy sencillo en IB-Expert, puesto que simplemente se introducen en listas (grids) distintas.
Respecto a como recuperar el valor en Delphi, como bien ha dicho ElKurgan, solo tienes que leer el parámetro de salida, una vez ejecutado el procedimiento.
SQLStoredProc1.ExecuteProcedure;
Result := SQLStoredProc1.ParamByName('ID').Value;
Saludos.
Lo más sencillo es crear los procedimientos almacenados desde un gestor como IB-Expert, que veo en otro hilo que ya tienes instalado (recuerda que hay una versión Personal Edition que es completamente gratuita).
Declarar los parámetros como entrada o salida es muy sencillo en IB-Expert, puesto que simplemente se introducen en listas (grids) distintas.
Respecto a como recuperar el valor en Delphi, como bien ha dicho ElKurgan, solo tienes que leer el parámetro de salida, una vez ejecutado el procedimiento.
SQLStoredProc1.ExecuteProcedure;
Result := SQLStoredProc1.ParamByName('ID').Value;
Saludos.
#4
Escrito 13 febrero 2015 - 09:06
Muchas gracias por su ayuda amigos.
Mi problema con la declaración de parámetros de salida estaba en que estoy sumamente acostumbrado a que en las demás bases de datos estos se declaran en un solo bloque y pueden ser de salida, entrada o salida y entrada. En firebird por el contrario y como bien me indicaron, los parámetros de salida se deben declarar en el bloque return. Eso generó que me confundiera pues es precisamente allí donde se declaran las columas del recordset que se obtendrá en procedimientos. Pero al final lo declaré allí y decidí ejecutarlo desde delphi con un execproc consiguiendo por fin obtener el parámetro de salida.
Bendito Firebird que me hizo sufrir un poco.
Mi problema con la declaración de parámetros de salida estaba en que estoy sumamente acostumbrado a que en las demás bases de datos estos se declaran en un solo bloque y pueden ser de salida, entrada o salida y entrada. En firebird por el contrario y como bien me indicaron, los parámetros de salida se deben declarar en el bloque return. Eso generó que me confundiera pues es precisamente allí donde se declaran las columas del recordset que se obtendrá en procedimientos. Pero al final lo declaré allí y decidí ejecutarlo desde delphi con un execproc consiguiendo por fin obtener el parámetro de salida.
Bendito Firebird que me hizo sufrir un poco.
#5
Escrito 13 febrero 2015 - 07:22
Bendito Firebird que me hizo sufrir un poco.
PoliTroll ese es un castigo por no tener fe en firebird e ir por el lado oscuro
#6
Escrito 13 febrero 2015 - 09:54
PoliTroll ese es un castigo por no tener fe en firebird e ir por el lado oscuro
me gusta más ese nick que el de poliburro...
#7
Escrito 14 febrero 2015 - 12:11
PoliTroll ese es un castigo por no tener fe en firebird e ir por el lado oscuro
me gusta más ese nick que el de poliburro...
Habla con alguien influyente en DelphiAccess a lo mejor logras que te cambien el nick
Saludox !