Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Valor de parámetro de salida ADO Stored Procedure (https://www.clubdelphi.com/foros/showthread.php?t=94999)

juggern 21-12-2020 10:32:55

Valor de parámetro de salida ADO Stored Procedure
 
Buenos días chicos,

No se si este tema iría exactamente aquí, creo que si.

Veréis, tengo un procedimiento almacenado creado en SQL que devuelve un valor en uno de los parámetros:

Código SQL [-]
ALTER PROCEDURE [dbo].[PR_calculacontador]
   @ejercicio int,
   @local varchar(2),
   @contador int OUTPUT

Yo ejecuto este procedimiento almacenado desde delphi y lo ejecuta bien, hace los procesos que tiene que hacer dentro del pa y todo.
El problema que tengo que es quiero guardar en una variable el valor de @contador, porque tengo que usarlo más adelante, pero no consigo acceder a ese valor.
Hago lo siguiente:

Código Delphi [-]


       cont:= 0;

       ADOStoredProc1.ProcedureName:= 'PR_calculacontador';
       ADOStoredProc1.Parameters.Clear;
       ADOStoredProc1.Parameters.AddParameter.Name:= 'ejercicio';
       ADOStoredProc1.Parameters.ParamByName('ejercicio').Value := 2020;
       ADOStoredProc1.Parameters.AddParameter.Name:= 'local';
       ADOStoredProc1.Parameters.ParamByName('local').Value := 'ES';
       ADOStoredProc1.Parameters.AddParameter.Name:= 'contador';
       ADOStoredProc1.Parameters.ParamByName('contador').Value := cont;
       ADOStoredProc1.ExecProc;

       cont := ADOStoredProc1.Parameters.ParamByName('contador').Value;

El procedimiento lo ejecuta, pero no se bien como acceder al valor que devuelve contador porque la variable cont no la actualiza, me devuelve siempre 0.

Muchas gracias

Un saludo

Casimiro Notevi 21-12-2020 10:52:41

Seguramente "Fields[0].AsInteger;"

juggern 21-12-2020 11:17:32

Hola!

He probado y nada, me da error List Index out of bounds.

He probado también
Cita:

cont := ADOStoredProc1.Parameters.ParamValues['contador'];
y poniendo @ delante de los parámetros pero siempre me devuelve 0

Un saludo

Casimiro Notevi 21-12-2020 11:40:32

A ver si te sirve esto.

juggern 22-12-2020 08:45:05

Buenos días,

Nada, no consigo que funcione. Le daré vueltas para hacerlo de otra manera.

Muchas gracias!

Casimiro Notevi 22-12-2020 09:48:52

Poco podemos hacer si no muestras el código.

lgarcia 08-01-2021 12:08:32

Valor de parametro de salida de un ADO SP
 
hola: aunque no muestras el codigo interno del SP si pudieras en vez de un parametro externo que cogieras ese valor (contador) con un SELECT entonces en Delphi

Código Delphi [-]
with ADOStoredProc1 do
begin 
  Close;
  Parameter.ParamByName('@ejercicio').Value:= 2020;
  Parameter.ParamByName('@local').Value:= 'ES';
  Open;
end;

Entonces podrias capturar el valor de cont:= ADOStoredProc1contador.Vaue;

Saludos
Luis


La franja horaria es GMT +2. Ahora son las 06:10:37.

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