What is wrong with this function please : i'm getting this error : Encountered the symbol "CFCE" when expecting one of the following:= . ( @ % ; Note : when i declare the cursor in the declare section no error but i need to declare it in the exception section
CREATE OR REPLACE FUNCTION PMISHR.SYS_ENCASH_FC
(
PRM_POLICY_KEY VARCHAR2,
PRM_POLDEBTOR_SEQ NUMBER,
PRM_SYSTEMIND VARCHAR2 DEFAULT 'G',
PRM_AGTBDX_DATE DATE
)
RETURN VARCHAR2 IS
--V_FC_PREMIUM VARCHAR2(3000 BYTE);
V_FC_PREMIUM CLOB :='';
BEGIN
IF PRM_SYSTEMIND = 'G' THEN
BEGIN
/* AUTO RECONCILIATION */
SELECT AGB_COMP_REF_NO
INTO V_FC_PREMIUM
FROM CDNOTE_RECONCILE_DATA, CDNOTE, AGENTVOBRX, AGENTBORDEREAUX, GENPOLDEBTOR
WHERE CDR_RECONCILE_SOURCE = 'GENPOLICY'
AND CDR_RECONCILE_SOURCE = CDN_SOURCE_TABLE
AND NVL(CDR_MANUALRECONCILE_IND,'N') = 'N'
AND CDN_SOURCE_CDE = POL_POLICY_CDE
AND CDN_SOURCE_SEQ = POL_POLDEBTOR_SEQ
AND POL_POLICY_CDE = PRM_POLICY_KEY
AND POL_POLDEBTOR_SEQ = PRM_POLDEBTOR_SEQ
AND CDR_CDNOTE_TYPE = CDNOTE_TYPE
AND CDR_CDN_NUMBER_SYSTEM = CDNOTE_NUMBER
AND ((CDR_VO_BRX_PREM_CDN_TYPE = AVO_CDNOTE_TYPE AND AVO_CDNOTE_NUMBER = CDR_CDN_NUMBER_VO_BRX)
OR (CDR_CDN_NUMBER_VO_BRX IS NULL AND CDR_PREMIUMS_VO_CDE = AVO_PREMIUMSVO_CDE)
)
AND AVO_AGENTBORDEREAUX_CDE = AGENTBORDEREAUX_KEY
AND TRUNC(AGENTBORDEREAUX.A_DATE_TIME_CREATED) <= TRUNC(PRM_AGTBDX_DATE)
AND ROWNUM<=1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* MANUAL RECONCILIATION */
CURSOR cFCE(PRM_POLICY_KEY VARCHAR2,PRM_POLDEBTOR_SEQ NUMBER) IS
SELECT AGB_COMP_REF_NO
FROM MANUALPREMIUM_RECONCILE, CDNOTE_RECONCILE_DATA, CDNOTE, AGENTVOBRX, AGENTBORDEREAUX
WHERE CDNOTE.CDN_SOURCE_TABLE = 'GENPOLICY'
AND CDNOTE.CDN_SOURCE_CDE = PRM_POLICY_KEY
AND CDNOTE.CDN_SOURCE_SEQ = PRM_POLDEBTOR_SEQ
AND CDR_CDNOTE_TYPE = CDNOTE_TYPE
AND CDR_CDN_NUMBER_SYSTEM = CDNOTE_NUMBER
AND CDR_RECONCILE_WITH = 'AGENTVOBRX'
AND NVL(CDR_MANUALRECONCILE_IND,'N') = 'Y'
AND CDR_MANUALRECONCILE_BATCH_CDE = MPR_RECONCILE_BATCH_ID
AND CDR_VO_BRX_PREM_CDN_TYPE = AVO_CDNOTE_TYPE
AND AVO_CDNOTE_NUMBER = CDR_CDN_NUMBER_VO_BRX
AND AVO_AGENTBORDEREAUX_CDE = AGENTBORDEREAUX_KEY
AND MPR_CDNOTE_TYPE = CDR_CDNOTE_TYPE
AND MPR_CDNOTE_NUMBER = CDR_CDN_NUMBER_SYSTEM
AND TRUNC(AGENTBORDEREAUX.A_DATE_TIME_CREATED) <= TRUNC(PRM_AGTBDX_DATE)
AND AGB_VALID_IND = 'Y'
;
rFCE cFCE%ROWTYPE;
OPEN cFCE(PRM_POLICY_KEY,PRM_POLDEBTOR_SEQ);
LOOP
FETCH cFCE INTO rFCE;
EXIT WHEN cFCE%NOTFOUND;
V_FC_PREMIUM := V_FC_PREMIUM || rFCE.AGB_COMP_REF_NO || ' ; ';
END LOOP;
CLOSE cFCE;
if length(V_FC_PREMIUM)>4000 then V_FC_PREMIUM:= substr(V_FC_PREMIUM,1,4000); end if;
END;
RETURN V_FC_PREMIUM;
ELSE
BEGIN
/* AUTO RECONCILIATION */
SELECT AGB_COMP_REF_NO
INTO V_FC_PREMIUM
FROM CDNOTE_RECONCILE_DATA, CDNOTE, AGENTVOBRX, AGENTBORDEREAUX, LIFEPOLDEBTOR
WHERE CDR_RECONCILE_SOURCE = 'LIFE_POLICY'
AND CDR_RECONCILE_SOURCE = CDN_SOURCE_TABLE
AND NVL(CDR_MANUALRECONCILE_IND,'N') = 'N'
AND CDN_SOURCE_CDE = POL_POLICY_CDE
AND CDN_SOURCE_SEQ = POL_POLDEBTOR_SEQ
AND POL_POLICY_CDE = PRM_POLICY_KEY
AND POL_POLDEBTOR_SEQ = PRM_POLDEBTOR_SEQ
AND CDR_CDNOTE_TYPE = CDNOTE_TYPE
AND CDR_CDN_NUMBER_SYSTEM = CDNOTE_NUMBER
AND CDR_VO_BRX_PREM_CDN_TYPE = AVO_CDNOTE_TYPE
AND AVO_CDNOTE_NUMBER = CDR_CDN_NUMBER_VO_BRX
AND AVO_AGENTBORDEREAUX_CDE = AGENTBORDEREAUX_KEY
AND TRUNC(AGENTBORDEREAUX.A_DATE_TIME_CREATED) <= TRUNC(PRM_AGTBDX_DATE)
AND ROWNUM<=1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* MANUAL RECONCILIATION */
SELECT AGB_COMP_REF_NO
INTO V_FC_PREMIUM
FROM MANUALPREMIUM_RECONCILE, CDNOTE_RECONCILE_DATA, CDNOTE, AGENTVOBRX, AGENTBORDEREAUX
WHERE CDNOTE.CDN_SOURCE_TABLE = 'LIFE_POLICY'
AND CDNOTE.CDN_SOURCE_CDE = PRM_POLICY_KEY
AND CDNOTE.CDN_SOURCE_SEQ = PRM_POLDEBTOR_SEQ
AND CDR_CDNOTE_TYPE = CDNOTE_TYPE
AND CDR_CDN_NUMBER_SYSTEM = CDNOTE_NUMBER
AND CDR_RECONCILE_WITH = 'AGENTVOBRX'
AND NVL(CDR_MANUALRECONCILE_IND,'N') = 'Y'
AND CDR_MANUALRECONCILE_BATCH_CDE = MPR_RECONCILE_BATCH_ID
AND CDR_VO_BRX_PREM_CDN_TYPE = AVO_CDNOTE_TYPE
AND AVO_CDNOTE_NUMBER = CDR_CDN_NUMBER_VO_BRX
AND AVO_AGENTBORDEREAUX_CDE = AGENTBORDEREAUX_KEY
AND MPR_CDNOTE_TYPE = CDR_CDNOTE_TYPE
AND MPR_CDNOTE_NUMBER = CDR_CDN_NUMBER_SYSTEM
AND TRUNC(AGENTBORDEREAUX.A_DATE_TIME_CREATED) <= TRUNC(PRM_AGTBDX_DATE)
AND AGB_VALID_IND = 'Y'
AND ROWNUM<=1;
END;
RETURN V_FC_PREMIUM;
END IF;
END;
/
i'm having this error
Encountered the symbol "CFCE" when expecting one of the following:= . ( @ % ; Note : when i declare the cursor in the first section no problem but for performance issue i need to declare it in the exception section
You're not allowed to declare a cursor within the exception section. you can try declaring the cursor within the declaration section and then use it by fetching in the exception section.