Gracias Miguel.

 

Ya encontré una solución para este problemita, y la verdad que en SQL puedes 
determinar un LOOP de varias maneras así como en RPG y yo lo que hago es que 
combino SQL con RPG ya sea embebido o por procedimientos almacenados tipo SQL y 
Externos.

 

Gracias mil, saludos!!
 


Date: Fri, 10 Sep 2010 12:19:55 +0200
Subject: Re: Procedimiento Almacenado
From: [email protected]
To: [email protected]


Buenas
No controlo mucho de sql, pero parece que AT_END siempre es 0. ¿No sería mejor 
controlar el bucle por otro concepto?


El 10 de septiembre de 2010 00:42, Pedro Molina <[email protected]> escribió:


Hola Foro!!
 
Tengo un problemita con un PA que se me queda en un loop, de hecho lo que 
estaba probando era eso, de que no se me quedara colgado, les envío el codigo 
para que lo analizen y me den su opinión al respecto:
 
--  Generar SQL 
--  Versión:                    V5R2M0 020719 
--  Generado en:               31/08/10 14:42:33 
--  Base de datos relacional:        S105V3CM 
--  Opción de estándares:           DB2 UDB AS/400 
CREATE PROCEDURE LIBDAT.PA_POSTPPRICING ( ) 
 LANGUAGE SQL 
 SPECIFIC LIBDAT.PA_POSTPPRICING 
 NOT DETERMINISTIC 
 MODIFIES SQL DATA 
 CALLED ON NULL INPUT 
 BEGIN 
   
   -- Variables receptoras del cursor 
 DECLARE WUMCEL DECIMAL ( 20 , 0 ) ; 
 DECLARE WECINI DATE ; 
 DECLARE WORINI TIME ; 
 DECLARE WECFIN DATE ; 
 DECLARE WORFIN TIME ; 
 DECLARE WURTIM TIME ; 
 DECLARE WURSEC DECIMAL ( 6 , 0 ) ; 
 DECLARE WUMDEST DECIMAL ( 20 , 0 ) ; 
 DECLARE WICLO DECIMAL ( 6 , 0 ) ; 
 DECLARE WODPLAN CHAR(5) ; 
 DECLARE WENTRAL CHAR(4) ; 
 DECLARE WUTENT CHAR(6) ; 
 DECLARE WUTSAL CHAR(6) ; 
 DECLARE WELDORI CHAR(10) ; 
 DECLARE WELDTER CHAR(10) ; 
 DECLARE WWDNBR DECIMAL ( 20 , 0 ) ; 
 DECLARE WRDSER DECIMAL ( 10 , 0 ) ; 
 DECLARE WIPTIC CHAR(3) ; 
 DECLARE WTSREG CHAR(1) ; 
 DECLARE WERFAC DECIMAL( 6 , 0) ; 
 DECLARE WAIS DECIMAL ( 3 , 0 ) ; 
 DECLARE WREA DECIMAL ( 4 , 0 ) ; 
 DECLARE WODERR DECIMAL ( 5 , 0 ) ; 
 DECLARE WLRLLA DECIMAL ( 9 , 2 ) ; 
 DECLARE WIPLLA CHAR(2) ; 
  
   
   -- Variables de trabajo 
 DECLARE AT_END INT DEFAULT 0 ; 
 DECLARE NOT_FOUND CONDITION FOR '02000' ; 
   
   -- Cursor de Datos 
 DECLARE C1 CURSOR FOR 
   
 SELECT * FROM SICODAT . DETTRAM 
 WHERE STSREG = 'P' ; 
   
 DECLARE CONTINUE HANDLER FOR NOT_FOUND SET AT_END = 1 ; 
                      
 OPEN C1 ; 
   
      FETCH C1 INTO  WUMCEL, WECINI, WORINI, WECFIN, WORFIN, WURTIM, WURSEC, 
WUMDEST, WICLO,  
                                                 WODPLAN, WENTRAL, WUTENT, 
WUTSAL, WELDORI, WELDTER, WWDNBR, WRDSER, 
                                                 WIPTIC, WTSREG, WERFAC, WAIS, 
WREA, WODERR, WLRLLA, WIPLLA ;
 WHILE AT_END = 0 DO 
     SET WTSREG = 'F' ;
                        UPDATE SICODAT.DETTRAM SET STSREG = WTSREG ;    
      FETCH C1 INTO  WUMCEL, WECINI, WORINI, WECFIN, WORFIN, WURTIM, WURSEC, 
WUMDEST, WICLO,  
                                                 WODPLAN, WENTRAL, WUTENT, 
WUTSAL, WELDORI, WELDTER, WWDNBR, WRDSER, 
                                                 WIPTIC, WTSREG, WERFAC, WAIS, 
WREA, WODERR, WLRLLA, WIPLLA ;
  
 END WHILE ; 
   
 CLOSE C1 ; 
   
 END  ; 
 
Como podrán apreciar, pues es bastante sencillo, generalmente los cursores 
embebidos en rpg si los controlo con el SQLCOD.
 
Quizá me puedan dar una manita.
 
Saludos!!

____________________________________________________
Ú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.
                                          
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a