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.

Responder a