Ver Mensaje Individual
  #1  
Antiguo 27-03-2009
FOV2001 FOV2001 is offline
Registrado
 
Registrado: nov 2008
Posts: 9
Reputación: 0
FOV2001 Va por buen camino
Rescatar Parametro Output

Gente, buenas tardes,

Tengo un problema que espero me ayuden a resolver:

Base MySql
Un Stored Procedure que usa un parametro de entrada Integer de 2 y uno de salida integer de 2 tambien

El codigo:
CREATE PROCEDURE `sp_prueba`(IN numero INTEGER(2),
OUT param1 INTEGER(2))
BEGIN
SELECT numero * numero INTO param1;
END

Ultra simple.

Llamo desde Delphi 7 el ADOCommand o Storedproc, y pueden pasar 2 cosas:

1.- Si NO defino el parametro de salida, me dice:
Incorrect Number of Parameters expected 2, got 1

2.- SI defino el parametro de salida, me dice:
OUT or INOUT parameter for rutine Base.sp_prueba is not a variable or NEW pseudo-variable in BEFORE TRIGGER

Como lo llamo:
var
pp: variant;
pp1 : Integer;
adoc: TAdocommand;

begin
adoc.CommandType := cmdStoredProc;

with adoc.Parameters do
begin
CreateParameter('numero',ftinteger,pdInput,2,5);
CreateParameter('param',ftinteger,pdOutput,2,null);
end;

adoc.Prepared := True;
adoc.Execute;

pp := adoc.Parameters.ParamValues['param'];
if pp <> null then
begin
pp1:= pp.asinteger;
showmessage(inttostr(pp1));
end;
end;

Este procedimiento es solo una prueba basica para poder leer resultados de procedimientos almacenados para despues aplicarlo en un Procedimiento en serio, pero si una pavada como esta no la puedo resolver, meno voy a poder algo más complejo.

Disculpen lo basico de la pregunta, pero la verdad, depeus de leer un monton, sigo sin poder encontrarle la vuelta.


Gracias de antemano,

Fernando
Responder Con Cita