Continued..  
 

 Adding a SUSPEND call resolves the issue. Records calculated before as well as 
after the exception are now commited and the changed procedure below gets the 
job done.
 

 /M
 

 

 

 SET TERM ^ ;
 ALTER PROCEDURE P_LN_PC_PLAN_ALL_INSTRUMENTS2
 RETURNS (
     ID Varchar(20),
     RESULT Varchar(100) )
 AS
 BEGIN
   FOR SELECT ID 
   FROM LN_LOANS
   WHERE COALESCE(DETAILS_LOCKED, 0)=0
   INTO :ID
   DO BEGIN
       RESULT='SUCCESS';
       EXECUTE PROCEDURE P_LN_PC_PLANINSTRUMENT(:ID);
       SUSPEND;  
       WHEN ANY DO BEGIN
         IN AUTONOMOUS TRANSACTION DO
            INSERT INTO LN_PLAN_ERRORS (LOAN_ID, ERRORDATE, MSG)
            VALUES (:ID, CURRENT_TIMESTAMP, 'GDSCODE: '||GDSCODE||', SQLCODE: 
'||SQLCODE||', SQLSTATE: '||SQLSTATE);
         RESULT='FAILED';
         SUSPEND;
       END     
   END
 END ^
 SET TERM ; ^

Reply via email to