Delphi - STORE PROCEDURE

 
Vista:

STORE PROCEDURE

Publicado por FPENA (2 intervenciones) el 18/08/2007 00:24:00
Hola a todos, tengo un problema, hice un procedimiento almacenado que cuando lo corro desde el AS400 funciona a las mil maravillas, pero cuando es llama desde una aplicacion externa o ajena al AS400 no funciona...el hecho es que ejecuta lo que tiene que hacer pero debe retornar algo y no lo esta haciendo asi, el procedimiento es llamado desde un programa en DELPHI ver 5.0 llega al AS400, hace lo que tiene que hacer y debe de retornar una respuesta, pero la respuesta no la recibo en el programa de DELPHI..., incluyo el codigo del procedimiento almacenado y el codigo del programa en DELPHI, talvez me pueden ayudar gracias...

STORE PROCEDURE AS400:
BEGIN
DECLARE SALDO_DISPONIBLE NUMERIC (12,2);
DECLARE CUENTA_EDITADA CHARACTER (15);
DECLARE RETORNO CHARACTER (01);
DECLARE ESTADO CHARACTER (01);
DECLARE VERIF01 CURSOR FOR SELECT CTEDIT, CTSTA, CTT002 FROM DEPDAT.DPCTAS WHERE CTEDIT = CUENTA_IN;
SET CUENTA_EDITADA = '';
SET RETORNO='S';
SET FLAG_ERROR='0';
OPEN VERIF01;
FETCH VERIF01 INTO CUENTA_EDITADA, ESTADO, SALDO_DISPONIBLE;
IF SQLCOD=0 THEN
IF CUENTA_EDITADA = '' THEN
SET RETORNO = 'N';
ELSE
IF ESTADO <> 'A' AND ESTADO <> ' ' THEN
SET RETORNO = 'N';
ELSE
IF VALOR_IN > SALDO_DISPONIBLE THEN
SET RETORNO = 'N';
END IF;
END IF;
END IF;
END IF;
IF RETORNO = 'N' THEN SET FLAG_ERROR = '1'; END IF;
CLOSE VERIF01;
END
FLAG_ERROR ES MI VARIABLE DONDE DEBE RETORNAR EL VALOR...

CODIGO DEL PROCEDIMIENTO EN DELPHI
procedure TForm1.Button1Click(Sender: TObject);
VAR
ERROR :STRING[20];
CUENTA_EDITADA :STRING[20];
VALOR_STRING :STRING[20];
VALOR :REAL;
CODE :INTEGER;
begin
CUENTA_EDITADA:=COPY(EDIT6.TEXT,1,2) + '-' + COPY(EDIT6.TEXT,3,3) + '-' + COPY(EDIT6.TEXT,6,6) + '-' + COPY(EDIT6.TEXT,12,1);
VAL(EDIT5.Text,VALOR, CODE);
VALOR:=VALOR * 100;
VALOR_STRING:=FORMATFLOAT('000000000000',VALOR);
PROCEDIMIENTO_01.PROCEDURENAME:='CA.VERIF_001';
PROCEDIMIENTO_01.PARAMETERS.CREATEPARAMETER('P_CUENTA', ftString, pdInput, 20, CUENTA_EDITADA);
PROCEDIMIENTO_01.PARAMETERS.CREATEPARAMETER('P_VALOR', ftString, pdInput, 20, VALOR_STRING);
PROCEDIMIENTO_01.PARAMETERS.CREATEPARAMETER('P_ERROR', ftString, pdInputOutput, 20, '');
PROCEDIMIENTO_01.EXECPROC;
ERROR:=PROCEDIMIENTO_01.PARAMETERS.PARAMBYNAME('P_ERROR').VALUE
end;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder