AS/400 - STORE PROCEDURE

 
Vista:

STORE PROCEDURE

Publicado por FPENA (2 intervenciones) el 18/08/2007 00:22:25
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
Imágen de perfil de Juan Arturo Gomez
Val: 2
Ha disminuido 1 puesto en AS/400 (en relación al último mes)
Gráfica de AS/400

con RPG tambien

Publicado por Juan Arturo Gomez (24 intervenciones) el 09/09/2007 21:58:14
Deberias intentarlo tambien con un Stored Procedure creado con RPG, donde, al final armas un arreglo con los valores a devolver como un resultset o cursor

para ver ejemplos busca en www.google.com por:
rpg stored procedure

por ejemplo:
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/sqlp/rbafyresultsete2.htm
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar