Ver Mensaje Individual
  #1  
Antiguo 21-02-2013
ElGatitoTapatio ElGatitoTapatio is offline
Miembro
 
Registrado: nov 2006
Posts: 38
Reputación: 0
ElGatitoTapatio Va por buen camino
Exclamation SP en Firebird y consulta con Zeos Query

Muy buen día a todos, tengo un problema o mas que eso una falta de conocimiento, mi pregunta es cual es la forma correcta de mandar llamar un stored procedure desde los componentes ZEOS cuando este cuenta con info de salida.

Ese es mi procedimiento almacenado:
Código SQL [-]
CREATE PROCEDURE ABRIR_SESION(
  ID_USUARIO INTEGER,
  EQUIPO VARCHAR(15) CHARACTER SET ISO8859_1,
  IP_LOCAL VARCHAR(15) CHARACTER SET ISO8859_1,
  WINUSER VARCHAR(20) CHARACTER SET ISO8859_1)
RETURNS(
  ID_SESION INTEGER)
AS
BEGIN
  /* Procedure body */
  INSERT INTO HISTORICO_SESIONES(EQUIPO,IP,ID_USUARIO,WINUSER)
  VALUES (:EQUIPO,:IP_LOCAL,:ID_USUARIO,:WINUSER) RETURNING ID INTO ID_SESION;
  SUSPEND;
END;

y este es mi codigo en Delphi:

Código Delphi [-]
...
    with ZQuery_Cambios do
      begin
        Close;
        With SQL do
          begin
            Clear;
            if Not Cerrar then
              Add('Select ID_SESION from ABRIR_SESION('+IntToStr(IDUsuarioConectado)+','''+
                  GetPCName+''','''+GetLocalIP+''','''+GetUserWin+''')');
            Open;
            IDSesion:= Fields[0].AsInteger;
          end;
      end;

    ShowMessage(IntToStr(IDSesion));
...


Mi problema es que no se actualiza el dato en la tabla hasta que cierro mi sistema, tengo la impresion que tengo que utilizar ExecSQL sin embargo cuando hago esto no se como obtener el dato que me devuelve el procedimiento. Intente hacerlo por medio de parametros fallando en el intento.

Alguien podria resolver mi duda por favor! se que es algo muy simple que se me esta escapando.

Muchas gracias de antemano!!
Responder Con Cita