Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Llamar a un stored procedure de mysql y recuperar resultados (https://www.clubdelphi.com/foros/showthread.php?t=61366)

tksko 05-11-2008 06:11:26

Llamar a un stored procedure de mysql y recuperar resultados
 
Hola a todos!

bueno tengo un stored procedure en mi base de datos mysql.
resumiendo es algo asi

procedure conectar(IN elcospel INT UNSIGNED,IN elparq INT UNSIGNED)

hace cosas en el medio....... y antes de finalizar hago un select para devolver resultados:

SELECT 'cierre' as operacion,minutos as tiempo,newsaldo as saldo_actualizado;

ahora necesito desde Delphi llamar a ese procedimiento con parametros que el usuario ingresa y luego recuperar la informacion que este procedimiento me devuelve para poder mostrarla en delphi en un mensaje o hacer otras cosas.

El problema es que no me sale! ya probe con varios componentes, entre ellos ADOQuery con ExcecSQL y tambien ADOStoredProc.

Con AdoQuery.Excec funciona correctamente pero no me deja recuperar el resutlado que devuelve el procedimiento..

ADOQuery2.Active:= false;
ADOQuery2.SQL.Text:='CALL conectar('+idcospel+','+idparq+')';
ADOQuery2.ExecSQL;


con el Adostoredproc no me deja ni ejecutarlo, nose porque delphi insiste en agregarle llaves a la consulta ( {}) y esta falla.

with ADOStoredProc1 do begin
ProcedureName:='conectar';
Parameters.ParamByName('idcospel').Value:=strtoint(idcospel);
Parameters.ParamByName('idparq').Value:=strtoint(idparq);
ExecProc;
end;


me da un error de excepcion diciendo por ejemplo
Error en la sintaxis bla bla bla y pone {call conectar (2,55) }
no se porque le agrega llaves si yo en ningun momento las pongo :S


ya no se que hacer

si alguien puede ayudarme :D

gracias

2-D@monic 05-11-2008 15:49:34

Si te devuelve registros el procedimiento es ADOQuery2.Open de igual forma con ADOStoredProc1.Open; ........ si no funciona ninguno........ probaste en la consola de mysql si el procedimiento funciona?

enecumene 05-11-2008 16:08:57

¿idcospel y idparq, qué son?, ¿variables delphi o del mysql o son campos?, ¿probaste con la consola a ver si te muestra los datos?, coincido con 2-D@monic, en vez de Exec usa Open.

Saludos.

tksko 05-11-2008 16:20:34

hola gente!
Si en la consola funciona correctamente.
Con el ADOstoredProc defino los parametros con un editor de parametros que tiene y despues durante la ejecucion del programa le asigno valores.

Parameters.ParamByName('idcospel').Value:=strtoint(idcospel);
Parameters.ParamByName('idparq').Value:=strtoint(idparq);

ParamByName('idcospel') es un parametro y strtoint(idcospel) es una variable ke recupera mas atras un valor entero.

como les digo, delphi me tira una excepcion y en la misma me muestra la consulta correcta, por ejemplo
call conectar (2,2) pero entre llaves y dice que tengo un error de sintaxis con mi version de mysql y bla bla

voy a probar lo que me dicen a ver si funcione!

si no se me ocurrio que voy a tener que agregar parametros de salida y luego consultar dichos parametros para obtener resultados :S

tksko 05-11-2008 16:26:24

Pues no funciona.
al utilizar Open en ambos obtengo lo siguiente:
-adoquery no realiza el call, osea, no hay cambios en la base de datos. y luego tampoco me deja recuperar los datos.

-adostoredproc el mismo error que antes, me tira un error en la sintaxis que forma delphi. :S

yo una vez que se ejecuta el adoquery trato de recuperar los datos asi:

ADOQuery2.FieldByName('operacion').Text

y me dice que no existe el campo operacion, cuando si se ejecuta el sotred procedure correctamente devuelve entre ellos un atributo operacion.

salu2


La franja horaria es GMT +2. Ahora son las 02:13:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi