프로그래밍에 익숙하지 않으므로 도움이 될 것입니다.저장 프로 시저 DBA 작업 프로그래밍
내 저장된 proc 코드를 찾아서 테이블을 삭제하고 DBA 작업을 작성하여 매시간 실행합니다.
CREATE OR REPLACE procedure DELETE_My_TABLE(myschema varchar2) as
BEGIN
BEGIN
execute immediate 'delete from '||myschema||'.mytable where clause;';
END;
BEGIN
DBMS_SCHEDULER.create_program (
program_name => 'DELETE_My_TABLE',
program_type => 'STORED_PROCEDURE',
program_action => 'execute DELETE_My_TABLE(myschema)',
number_of_arguments => 1,
enabled => FALSE,
comments => 'Program to delete table using a stored procedure.');
DBMS_SCHEDULER.define_program_argument (
program_name => 'DELETE_My_TABLE',
argument_name => 'myschema',
argument_position => 1,
argument_type => 'VARCHAR2',
default_value => 'myschema');
DBMS_SCHEDULER.enable (name => 'DELETE_My_TABLE');
END;
BEGIN
DBMS_SCHEDULER.create_schedule (
schedule_name => 'DELETE_My_TABLE',
start_date => SYSTIMESTAMP,
repeat_interval => 'freq=hourly; byminute=0',
end_date => NULL,
comments => 'Hourly Job to purge SEARCH_TEMP_TABLE');
END;
END;
/
문제 :
ERROR at line 1:
ORA-00920: invalid relational operator
ORA-06512: at "MYSCHEMA.DELETE_My_TABLE", line 4
ORA-06512: at line 1
는 논리 (및 구문)을 사용할 수 있습니까? 내가 볼 수
중첩 된 BEGIN ... END 블록을 달성하기 위해 무엇을하려고합니까? – cagcowboy
이것은 올바르게 보이지 않습니다. 프로 시저에서는 먼저 테이블에서 삭제하지만 (벌금) 동일한 프로 시저를 다시 호출 할 시간별 스케줄이 작성됩니다. 스케줄러가이를 호출 할 때 동일한 작업을 반복하여 동일한 시간에 다른 프로 시저를 다시 호출합니다. 며칠 후에 당신은 수십 개의 일정 잡을 할거야, 내 생각 엔 ... –