本篇內容主要講解“怎么解決ERROR中JOB執行DDL語句報錯ORA-06550”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么解決ERROR中JOB執行DDL語句報錯ORA-06550”吧!
一、問題描述
需求要通過JOB定時執行DDL語句(purge recyclbin),來實現清空回收站。簡單的問題,由于語法不了解所以報錯:ORA-06550 & PLS-00103。讓我們來看一下如何在JOB中執行DDL語句的正確語法。
二、測試
1.建立JOB
BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => '"TEST_USER"."PURGE_RECYCLBIN_TEST"', job_type => 'PLSQL_BLOCK', job_action => 'begin purge recyclebin; end; ', number_of_arguments => 0, start_date => NULL, repeat_interval => 'FREQ=WEEKLY;BYDAY=SUN;BYHOUR=0;BYMINUTE=0;BYSECOND=0', end_date => NULL, enabled => FALSE, auto_drop => FALSE, comments => '每周清理回收站'); DBMS_SCHEDULER.SET_ATTRIBUTE( name => '"TEST_USER"."PURGE_RECYCLBIN_TEST"', attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF); DBMS_SCHEDULER.enable( name => '"TEST_USER"."PURGE_RECYCLBIN_TEST"'); END; /
2.執行該JOB報錯
BEGIN DBMS_SCHEDULER.RUN_JOB(job_name => '"TEST_USER"."PURGE_RECYCLBIN_TEST"', USE_CURRENT_SESSION => FALSE); END; 報錯信息如下: ORA-06550: line 2, column 7: PLS-00103: Encountered the symbol "RECYCLEBIN" when expecting one of the following: := . ( @ % ; result_cache The symbol ":=" was substituted for "RECYCLEBIN" to continue.
3.修改為正確執行方式,重點修改job_action內容
BEGIN DBMS_SCHEDULER.set_attribute( name => '"TEST_USER"."PURGE_RECYCLBIN_TEST"', attribute => 'job_action', value => 'begin execute immediate ''purge recyclebin''; end; '); END; /
4.再次執行完成(無報錯)
BEGIN DBMS_SCHEDULER.RUN_JOB(job_name => '"TEST_USER"."PURGE_RECYCLBIN_TEST"', USE_CURRENT_SESSION => FALSE); END; /
到此,相信大家對“怎么解決ERROR中JOB執行DDL語句報錯ORA-06550”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。