這個觸發器執行失敗(它編譯但一旦我做指定的插入 - >錯誤)JOB是否可以在觸發器內動態創建?
create or replace
TRIGGER AFT_INSERT_TMP_TBL
AFTER INSERT ON TMP_TBL
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
V_SQL VARCHAR2(1000);
A_NAME VARCHAR2(100);
BEGIN
A_NAME:='ANY_NAME';
V_SQL:='BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => '''||A_NAME||''',
job_type => ''PLSQL_BLOCK'',
job_action => ''BEGIN DBMS_OUTPUT.PUT_LINE('||A_NAME||'); END;'',
start_date => TIMESTAMP''2011-12-4 10:30:00'',
repeat_interval => ''FREQ=MINUTELY;INTERVAL=2'',
auto_drop => FALSE,
comments => '''||A_NAME||''');
END;';
DBMS_OUTPUT.PUT_LINE('SCHEDULER :'||V_SQL);
EXECUTE IMMEDIATE V_SQL;
END AFT_INSERT_TMP_TBL;
-----------------------
印刷調度器創建代碼是完全有效的。
我得到一個ORA-04092'不能在觸發器...一個觸發器試圖提交或回滾。重寫觸發器,使其不提交或回滾'。
這是'提交'嗎?所以一個JOB不能在觸發器內創建?
我知道我已經使用觸發器插入到不同的表中,這也是一個「提交」 和Oracle沒有投訴。