Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   recuperando muchos registros con StoredProc (https://www.clubdelphi.com/foros/showthread.php?t=62022)

R0M3R0 01-12-2008 19:14:34

recuperando muchos registros con StoredProc
 
Buenas.
El problema pasa con que tengo un procedimiento almacenado cuyo codigo es el sig:

Código SQL [-]
CREATE OR REPLACE FUNCTION "public"."GetDatosEmpledo" (integer) RETURNS "public"."personal" AS
$body$
DECLARE
xnumempleado ALIAS FOR $1;
xreg personal%ROWTYPE;
BEGIN
SELECT * INTO xreg FROM personal
WHERE numempleado=xnumempleado;
RETURN xreg;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;




como veran esta en pl/pgSQL que retona un registro de la trabla personal
con un objeto storedProc que esta relacionado con un Data set. Deseo recuperar estos datos para posteriormente mostrarlos en un DBGrid
para ello empleo el siguiente codigo


Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject);
begin
with StoredProc1 do
begin
ParamByName('numempleado_').AsInteger := StrToInt(Edit1.Text);
Prepare;
open;
end;
end;



pero me sale el siguiente error
Key violation.
GetData to Procedure return failed
Que estoy haciendo mal??
por favor HELP ME !

defcon1_es 02-12-2008 13:36:28

Hola.

Prueba a cambiar Open por Execproc.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with StoredProc1 do
  begin
    ParamByName('numempleado_').AsInteger := StrToInt(Edit1.Text);
    Prepare;
    ExecProc;        //open;
  end;
end;

R0M3R0 02-12-2008 15:40:28

haciendo pruebas
 
defcon1_es
gracias ... por responder

Puesto que las pruebas de cambios por ExecProc u open; ya lo hice mucho hantes de iniciar este hilo..
sigo esperando opiniones

ozsWizzard 15-01-2009 14:39:44

No sé si lo has hecho en tiempo de diseño, pero crear el parámetro de resultado es lo que creo que te falta, no sé.

Supongo que lo que es el de numempleado_ sí que lo tienes creado en tiempo de diseño.

Código:

procedure TForm1.Button1Click(Sender: TObject);
begin
  with StoredProc1 do
  begin
      Params.CreateParam(ftCursor, 'RESULT', ptResult);

      ParamByName('numempleado_').AsInteger := StrToInt(Edit1.Text);     
      open;
  end;
end;



La franja horaria es GMT +2. Ahora son las 23:49:04.

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