DECLARE TRAN1-CSR CURSOR FOR
SELECT
A.ID
FROM MCS_REQUEST A
JOIN MCS_RQST_STATUS B
ON A.RQST_STUS_CD = B.RQST_STUS_CD
JOIN (
SELECT E.MCO_CTRT_NUM
FROM MCS_MCO_CONTRACT E
WHERE E.RGN_NUM IN (
SELECT F.RGN_NUM
FROM MCS_DATA_ACS_RULE F,
MCS_USER_DATA_ACS G
WHERE F.DATA_ACS_RULE_ID =G.DATA_ACS_RULE_ID
AND G.MMCS_USER_ID = :WS-DATA-FLTR-ID
AND F.MCO_CTRT_NUM IS NULL)
UNION
SELECT E.MCO_CTRT_NUM
FROM MCS_MCO_CONTRACT E
WHERE E.MCO_CTRT_NUM IN (
SELECT F.MCO_CTRT_NUM
FROM MCS_DATA_ACS_RULE F,
MCS_USER_DATA_ACS G
WHERE F.DATA_ACS_RULE_ID = G.DATA_ACS_RULE_ID
AND G.MMCS_USER_ID = :WS-DATA-FLTR-ID
AND F.RGN_NUM IS NULL )
) AS Z
ON A.MCO_CTRT_NUM = Z.MCO_CTRT_NUM
WHERE A.RQST_STUS_CD = :WS-TRANS-STUS
AND A.RQST_TYPE_CD = :WS-TRANS-TYPE
AND A.GHP_TRAN_CD = :WS-GHP-TRAN-CD
AND A.RQST_TYPE_CD NOT IN (6, 4, 15, 16, 17,
18, 23, 25)
AND A.RQST_DEL_CD = 'N'
AND A.RQST_CRT_DT BETWEEN
:WS-FROM-DATE AND :WS-THRU-DATE
AND (A.RQST_XPRN_DT >= CURRENT DATE
OR A.RQST_XPRN_DT IS NULL )
FETCH FIRST 1001 ROWS ONLY
WITH UR
This is executed in a COBOL program via a DB2 Stored procedure.
The OPEN CURSOR statemebt works fine but it is clocking in the Fetch statement and that too at the first fetch. The Fetch statement is as said below.
FETCH TRAN1-CSR
INTO :WS-ID
My uderstanding is that an OPEN cursor statement will materialise the CURSOR sql statements(This is when the indexes are used), does it not mean that a Fetch should only read these records from the buffer.
In this case the OPEN is successfull but it clocks in Fetch. Which means that the records have already been retrieved from the respective tables but the reading of the records from the materialised cursor is clocking.
Please help me out