Multi Row Fetch Example
Multi Row Fetch Example
Note: This is just a small illustration, to show that we can use MULTI-ROW-FETCH Concept
to fetch more rows and process them in the program . For more details on this please refer
the IBM DB2 books.
Please take a look at the validation done when the fetch is performed. Very Important......
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE3.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-COUNT PIC 9(10) VALUE ZERO.
01 WS-EOF-CUR1 PIC X(1).
88 EOF-CUR1 VALUE 'N'.
01 WS-EOF-CUR2 PIC X(1).
88 EOF-CUR2 VALUE 'N'.
01 WS-F-DATA.
05 WS-GRP-CLIENT-AGN PIC S9(09) COMP OCCURS 1000 TIMES.
05 WS-FULL-GROUP-NO PIC X(18) OCCURS 1000 TIMES.
05 WS-CLT-GROUP-EFF-DATE PIC X(10) OCCURS 1000 TIMES.
EXEC SQL INCLUDE SQLCA END-EXEC.
EXEC SQL INCLUDE CBMCLT00 END-EXEC.
EXEC SQL INCLUDE CBMCPO00 END-EXEC.
EXEC SQL
DECLARE JD-SUP-CUR1 CURSOR WITH ROWSET POSITIONING FOR
SELECT A.CLIENT_AGN
,A.OPERATIONAL_ID
,A.EFF_DTE
FROM CBMCLT00 A
WHERE A.CLIENT_AGN IN
(SELECT C.CLIENT_AGN_ID
FROM CBMCPO00 C
WHERE C.ACSTR_CLNT_AGN_ID = 4920002
AND C.HIERARCHY_ID = 2800
AND C.GENERATION_RNK = 6
AND C.END_DTE = '2999-12-31')
AND A.CLIENT_TYPE_CDE = 'GR'
AND A.ROW_DEL_TMS > CURRENT TIMESTAMP
AND A.END_DTE >= CURRENT DATE
ORDER BY A.OPERATIONAL_ID, A.EFF_DTE DESC
END-EXEC.
*****
PROCEDURE DIVISION.
*******************
0000-MAIN-CONTROL.
*******************
EXEC SQL
OPEN JD-SUP-CUR1
END-EXEC.
DISPLAY 'OPEN SUCC'.
PERFORM 0001-FETCH-PARA UNTIL EOF-CUR1 OR EOF-CUR2.
DISPLAY 'NO OF ENTITIES FETCHED : ' WS-COUNT
EXEC SQL
CLOSE JD-SUP-CUR1
END-EXEC.
DISPLAY 'CLOSE SUCC'.
GOBACK.
*******************
0001-FETCH-PARA.
INITIALIZE WS-F-DATA.
EXEC SQL
FETCH NEXT ROWSET JD-SUP-CUR1 FOR 1000 ROWS
INTO :WS-GRP-CLIENT-AGN
,:WS-FULL-GROUP-NO
,:WS-CLT-GROUP-EFF-DATE
END-EXEC
EVALUATE TRUE
WHEN ((SQLCODE=100 OR SQLCODE=0) AND SQLERRD(3) > 0)
ADD SQLERRD(3) TO WS-COUNT
WHEN SQLCODE=100 AND SQLERRD(3) = 0
SET EOF-CUR1 TO TRUE
WHEN OTHER
MOVE SQLCODE TO SQLCDE
DISPLAY 'SQLCODE=' SQLCDE
SET EOF-CUR2 TO TRUE
END-EVALUATE.
0001-EXIT.
EXIT.
Javeed Ahmed