I am new to the oracle job scripts. I wrote some purge procedure to clean all the old data and retain the last 3 months data... procedure is executed successfully. its working when im calling manually also. procedure is as follows:
CREATE OR REPLACE PROCEDURE Archive
IS
v_query varchar2(2048);
v_tablename VARCHAR2(50);
v_condition varchar2(50);
TYPE cur_typ IS REF CURSOR;
c cur_typ;
BEGIN
OPEN c for 'select tablename,columnname from pseb.purge_tables';
FETCH c INTO v_tablename,v_condition;
LOOP
EXIT WHEN c%NOTFOUND;
if(v_tablename ='cfw.DCTBLPERFCUMULATIVEMASTER') then
v_query:='delete from cfw.DCTBLPERFDCUMULATIVEB3MAINREG where cumulativeid in (select cumulativeid FROM '|| v_tablename || ' WHERE ' || v_condition||' < sysdate-90';
execute immediate v_query;
v_query:='delete from cfw.DCTBLPERFDCUMULATIVEB4TODENERG where cumulativeid in (select cumulativeid FROM '|| v_tablename || ' WHERE ' || v_condition||' < sysdate-90';
execute immediate v_query;
v_query:='delete from cfw.DCTBLPERDFCUMULATIVEB5MAXDEMAN where cumulativeid in (select cumulativeid FROM '|| v_tablename || ' WHERE ' || v_condition||' < sysdate-90';
execute immediate v_query;
v_query:='delete from cfw.DCTBLPERFDCUMULATIVEB6TODREG where cumulativeid in (select cumulativeid FROM '|| v_tablename || ' WHERE ' || v_condition||' < sysdate-90';
execute immediate v_query;
v_query:='delete from cfw.DCTBLPERFDCUMULATIVEB7MAXDEMAN where cumulativeid in (select cumulativeid FROM '|| v_tablename || ' WHERE ' || v_condition||' < sysdate-90';
execute immediate v_query;
v_query:='delete from cfw.DCTBLPERFDCUMULATIVEB8MAXDEMAN where cumulativeid in (select cumulativeid FROM '|| v_tablename || ' WHERE ' || v_condition||' < sysdate-90';
execute immediate v_query;
v_query:='delete FROM '|| v_tablename || ' WHERE ' || v_condition||' < sysdate-90';
execute immediate v_query;
else
begin
v_query:='delete FROM '|| v_tablename || ' WHERE ' || v_condition||' < sysdate-90';
execute immediate v_query;
end;
end if;
FETCH c INTO v_tablename,v_condition;
end LOOP;
close c;
END; --Procedure
my JOb script is as follows:
begin
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'purgeproc_automation',
job_type => 'STORED_PROCEDURE',
job_action => 'call pseb.archive();',
repeat_interval => 'FREQ=DAILY;INTERVAL=2', /* every other day */
auto_drop => false,
enabled => true,
comments => 'My new job');
end;
/
Job was created successfully, but the job status is failed, not succeed . Whats the reason behind it? it returns the following error:
ORA-06550: line 1, column 728:
PLS-00103: Encountered the symbol "PSEB" when expecting one of the following:
:= . ( @ % ;
The symbol ":=" was substituted for "PSEB" to continue.
please guide me to solve this...
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…