Hola

La respuesta corta es que no tienes ningún procedimiento que se llame
Program2; si que existe un programa pero no un Store procedure con dicho
nombre

La respuesta larga la puedes encontrar en este artículo

https://www.itjungle.com/2010/08/25/fhg082510-story02/

Saludos

El lun, 10 jun 2024, 17:59, Jordi Teres <tecn...@inupsa.es> escribió:

> Hola,
>
> Necesitaría algo de orientación, me explico.
>
> Tengo dos programas: PROGRAM1 y PROGRAM2. El PROGRAM1 utiliza el PROGRAM2.
>
> *PROGRAM2----(SQLRPGLE)--------------------------------*
> ... dcl-pi PROGRAM2;
>   pParam int(10) const options(*nopass);
> end-pi; ...
> exec sql
>   prepare myStmt from SELECT FIELD FROM FILE;
> exec sql
>   declare myCursor cursor for myStmt;
> exec sql
>   open myCursor;
> exec sql
>   set result sets cursor myCursor;
> Return;
> *PROGRAM1----(SQLRPGLE)-------------------------------- *...
> dcl-pr PROGRAM2 extpgm('PROGRAM2');
>   pParam int(10) const options(*nopass);
> end-pr;
> dcl-s loc1 SQLTYPE(RESULT_SET_LOCATOR);
> dcl-s sqlParam int(10) inz(0);
> exec sql      call PROGRAM2; *<-------------------- Versión 1
> .................................... o *
>      call PROGRAM2(:sqlParam); *<----- Versión 2 (SQLCODE +466: One or
> more ad hoc result sets were returned from the procedure)*
> exec sql
>      associate result set locators (:loc1) with procedure PROGRAM2; *<-----
> Para la Versión 2 (SQLCODE -480: The procedure referenced in a DESCRIBE
> PROCEDURE or ASSOCIATE LOCATOR statement has not yet been called within the
> application process.)*
> exec sql
>      allocate myCursor cursor for result set :loc1;
> exec sql
>      fetch from myCursor into :field;
> dow (....); ....
> exec sql
>      fetch next from myCursor into :field; .... enddo; ....
> La cuestión es que si la llamada al PROGRAM2 la hago sin parámetros (*Versión
> 1*), todo funciona correctamente y el result set lo puedo leer desde el
> PROGRAM1. Si la llamada al PROGRAM2 la hago con parámetros (*Versión 2*),
> al procesarse la línea exec sql associate result set locators (:loc1)
> with procedure PROGRAM2; recibo el error -480 que indica que PROGRAM2 no
> se ha llamado en el proceso. Me podéis echar una mano para ver lo que me
> falta? Muchas gracias Jordi Teres
>
>
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>  Libre
> de virus.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
> <#m_-5895608832472835477_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
> ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 � Publicaciones Help400, S.L.
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 � Publicaciones Help400, S.L.

Reply via email to