CREATE OR REPLACE
PROCEDURE "p*_d******"
(V_Day IN CHAR, v_Pk_List IN CHAR,
v_Log OUT VARCHAR2, v_Msg OUT VARCHAR2)
is
--v_Pk_List VARCHAR2(50);
v_DSQL1 VARCHAR2(2000);
v_DSQL2 VARCHAR2(2000);
V_COUNT NUMBER(10);
V_Today_Day VARCHAR2(20);
V_START_TS TIMESTAMP(2);
v_Errormsg VARCHAR2(100);
V_PK NUMBER(10);
CURSOR pk_cur IS
SELECT *
FROM ( SELECT TRIM (REGEXP_SUBSTR (num_csv,
'[^,]+',
1,
LEVEL))
num_value
FROM ( SELECT v_Pk_List num_csv FROM DUAL)
CONNECT BY LEVEL <= regexp_count (num_csv, ',', 1) + 1)
WHERE num_value IS NOT NULL;
BEGIN
SELECT TO_CHAR(SYSTIMESTAMP, 'DD-MON-YY HH:MI:SS AM') INTO V_START_TS FROM DUAL;
IF
NOT pk_cur%ISOPEN THEN
OPEN pk_cur;
END IF;
BEGIN
LOOP
FETCH pk_cur INTO V_PK;
EXIT WHEN pk_cur%NOTFOUND;
SELECT COUNT(*)
INTO V_COUNT
FROM
***_***_******
WHERE
RUN_MODE =V_DAY
AND PK_ID=V_PK;
IF
V_COUNT<=0 THEN
EXECUTE IMMEDIATE 'INSERT INTO ***_***_******
(
fact********,
PK_ID,
pr**_d*****,
RUN_MODE,
CREATE_DATE
)
SELECT fact********,
PK_ID,
DUEDATE,
'''||V_DAY||''',
SYSTIMESTAMP
FROM ***_***_*********
WHERE PK_ID ='''||V_PK||'''';
v_Errormsg :='INSERT SUCCESSFULL FOR';--||V_DAY||'AND PK_ID'||V_PK;
EXECUTE IMMEDIATE 'INSERT INTO u**_s*****_e***_l**(MODULENAME,PROCEDURENAME,PKID,MODELID,LEVELID,COL_1,COL_2,ERRORMSG,ERRORTRACE,START_TS,END_TS)
VALUES(''EMEA_PROCESS'',
''p*_d******'',
'''||v_Pk_List||''',
NULL,
NULL,
''SUCCESS'',
'''||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE||''',
NULL,
NULL,
'''||V_START_TS||''',
SYSTIMESTAMP)';
BEGIN
EXCEPTION WHEN OTHERS THEN
v_Errormsg := 'ERROR: p*_d****** PROCEDURE INSERT ERROR' ;--|| 'ERROR_MSG IS '||SQLERRM;
EXECUTE IMMEDIATE 'INSERT INTO u**_s*****_e***_l**(MODULENAME,PROCEDURENAME,PKID,MODELID,LEVELID,COL_1,COL_2,ERRORMSG,ERRORTRACE,START_TS,END_TS)
VALUES(''????'',
''p*_d******'',
'''||v_Pk_ID||''',
NULL,
NULL,
'''||v_Errormsg||''',
'''||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE||''',
NULL,
NULL,
'''||V_START_TS||''',
SYSTIMESTAMP)';
END;
END IF;
EXECUTE IMMEDIATE 'MERGE INTO ***_***_********* GFO
USING
***_***_****** UFD
ON (GFO.fact********=UFD.fact********)
WHEN MATCHED THEN
UPDATE
SET
GFO.pr**_d*****=UFD.pr**_d*****
WHERE UFD.CREATE_DATE IS NOT NULL
AND UFD.RUN_MODE= '''||V_DAY||'''
AND GFO.PK_ID='''||V_PK||'''';
v_Errormsg :='pr**_d***** OF GFO UPDATED FOR ';--||V_DAY||' AND PK_ID '||V_PK;
EXECUTE IMMEDIATE 'INSERT INTO u**_s*****_e***_l**(MODULENAME,PROCEDURENAME,PKID,MODELID,LEVELID,COL_1,COL_2,ERRORMSG,ERRORTRACE,START_TS,END_TS)
VALUES(''EMEA_PROCESS'',
''p*_d******'',
'''||v_Pk_List||''',
NULL,
NULL,
''SUCCESS'',
'''||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE||''',
NULL,
NULL,
'''||V_START_TS||''',
SYSTIMESTAMP)';
BEGIN
EXCEPTION WHEN OTHERS THEN
v_Errormsg := 'ERROR: p*_d****** PROCEDURE INSERT ERROR';-- || 'ERROR_MSG IS '||SQLERRM;
EXECUTE IMMEDIATE 'INSERT INTO u**_s*****_e***_l**(MODULENAME,PROCEDURENAME,PKID,MODELID,LEVELID,COL_1,COL_2,ERRORMSG,ERRORTRACE,START_TS,END_TS)
VALUES(''????'',
''p*_d******'',
'''||v_Pk_ID||''',
NULL,
NULL,
'''||v_Errormsg||''',
'''||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE||''',
NULL,
NULL,
'''||V_START_TS||''',
SYSTIMESTAMP)';
END;
EXECUTE IMMEDIATE 'MERGE INTO ***_***_****** UFD
USING
***_***_********* GFO
ON (UFD.fact********=GFO.fact********)
WHEN MATCHED THEN
UPDATE
SET
UFD.pr**_d*****=GFO.DUEDATE
WHERE
GFO.PK_ID='''||V_PK||'''';
v_Errormsg :='pr**_d***** OF UFD BACKED UP IN GFO FOR ';--||V_DAY||' AND PK_ID '||V_PK;
EXECUTE IMMEDIATE 'INSERT INTO u**_s*****_e***_l**(MODULENAME,PROCEDURENAME,PKID,MODELID,LEVELID,COL_1,COL_2,ERRORMSG,ERRORTRACE,START_TS,END_TS)
VALUES(''EMEA_PROCESS'',
''p*_d******'',
'''||v_Pk_List||''',
NULL,
NULL,
''SUCCESS'',
'''||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE||''',
NULL,
NULL,
'''||V_START_TS||''',
SYSTIMESTAMP)';
BEGIN
EXCEPTION WHEN OTHERS THEN
v_Errormsg := 'ERROR: p*_d****** PROCEDURE INSERT ERROR';--||'ERROR_MSG IS '||SQLERRM;
EXECUTE IMMEDIATE 'INSERT INTO u**_s*****_e***_l**(MODULENAME,PROCEDURENAME,PKID,MODELID,LEVELID,COL_1,COL_2,ERRORMSG,ERRORTRACE,START_TS,END_TS)
VALUES(''????'',
''p*_d******'',
'''||v_Pk_ID||''',
NULL,
NULL,
'''||v_Errormsg||''',
'''||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE||''',
NULL,
NULL,
'''||V_START_TS||''',
SYSTIMESTAMP)';
END;
END LOOP;
END;
END p*_d******;
I am getting following error for all the 3 EXCEPTION blocks:
Error(100,3): PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following: ( begin case declare exit for goto if loop mod null pragma raise return select update while with << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge