Oracle 的 dbms_metadata.get_ddl for object_type JOB
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3235300/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Oracle's dbms_metadata.get_ddl for object_type JOB
提问by asalamon74
I'd like to create ddl scripts for most of my database objects. dbms_metadata.get_ddlworks for most of the object types. For instance the following creates the ddl for a view:
我想为我的大多数数据库对象创建 ddl 脚本。dbms_metadata.get_ddl适用于大多数对象类型。例如,以下内容为视图创建 ddl:
select dbms_metadata.get_ddl ( 'VIEW', 'SAMPLE_VIEW') from dual
On the other hand it's not working for object_type 'JOB'. The following:
另一方面,它不适用于 object_type 'JOB'。下列:
select dbms_metadata.get_ddl( 'JOB', 'SAMPLE_JOB' ) from dual
gives the following error:
给出以下错误:
ORA-31604: invalid NAME parameter "NAME" for object type JOB in function SET_FILTER
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 116
ORA-06512: at "SYS.DBMS_METADATA_INT", line 4705
ORA-06512: at "SYS.DBMS_METADATA_INT", line 8582
ORA-06512: at "SYS.DBMS_METADATA", line 2882
ORA-06512: at "SYS.DBMS_METADATA", line 2748
ORA-06512: at "SYS.DBMS_METADATA", line 4333
ORA-06512: at line 1
If I list my jobs using
如果我列出我的工作使用
select * from user_objects where object_type='JOB'
it shows SAMPLE_JOB (just like it shows SAMPLE_VIEW if filtered for object_type='VIEW').
它显示 SAMPLE_JOB(就像它显示 SAMPLE_VIEW 如果过滤了 object_type='VIEW' 一样)。
Why is it working for VIEW (and TABLE, INDEX, TRIGGER, ...) and not for JOB?
为什么它适用于 VIEW(以及 TABLE、INDEX、TRIGGER 等)而不适用于 JOB?
I'm using Oracle 10g.
我正在使用 Oracle 10g。
回答by dpbradley
select dbms_metadata.get_ddl('PROCOBJ', 'yourJobNameGoesHere') from dual;
PROCOBJ's are procedural objects.
PROCOBJ 是过程对象。
回答by Bikash Kumar Kar
select dbms_metadata.get_ddl('PROCOBJ',['JOB'|'PROGRAM'|'SCHEDULE'],'OWNER') from dual;
The PROCOBJ
can be JOB, PROGRAM and SCHEDULE.
该PROCOBJ
可JOB,方案和时间安排。
回答by Alfons
Alternative, get all jobs from the database with their DDL:
或者,使用 DDL 从数据库中获取所有作业:
select owner, job_name, dbms_metadata.get_ddl('PROCOBJ', job_name, owner) as ddl_output from ALL_SCHEDULER_JOBS