本篇内容主要讲解“怎么解决ERROR中JOB执行DDL语句报错ORA-06550”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决ERROR中JOB执行DDL语句报错ORA-06550”吧!
创新互联建站成立与2013年,是专业互联网技术服务公司,拥有项目网站设计制作、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元零陵做网站,已为上家服务,为零陵各地企业和个人服务,联系电话:028-86922220一、问题描述
需求要通过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”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!