कॉलिंग DBMS_SCHEDULER.CREATE_JOB
परोक्ष रूप से कमिट करता है इसलिए आप एक DBMS_SCHEDULER
नहीं बना सकते हैं एक ट्रिगर में नौकरी। यह उन स्थितियों में से एक है जो अभी भी पुराने DBMS_JOB
. का उपयोग करने के लिए कहते हैं DBMS_JOB.SUBMIT
. के बाद से पैकेज परोक्ष रूप से प्रतिबद्ध नहीं है।
इस ट्रिगर को DBMS_JOB
. का उपयोग करके वह कार्य बनाना चाहिए जो आप चाहते हैं पैकेज के बजाय DBMS_SCHEDULER
।
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);
l_jobno NUMBER;
BEGIN
A_NAME:='ANY_NAME';
dbms_job.submit( l_jobno,
'BEGIN dbms_output.put_line( ''' || a_name || ''' ); END;',
sysdate + interval '2' minute,
'sysdate + interval ''2'' minute' );
DBMS_OUTPUT.PUT_LINE('Job Number:'||l_jobno);
END AFT_INSERT_TMP_TBL;