Oracle的object_type JOB的dbms_metadata.get_ddl

asa*_*n74 6 oracle jobs oracle10g dbms-metadata ora-06512

我想为我的大多数数据库对象创建ddl脚本.dbms_metadata.get_ddl适用于大多数对象类型.例如,以下内容为视图创建ddl:

select dbms_metadata.get_ddl ( 'VIEW', 'SAMPLE_VIEW') from dual
Run Code Online (Sandbox Code Playgroud)

另一方面,它不适用于object_type'JOB'.下列:

select dbms_metadata.get_ddl( 'JOB', 'SAMPLE_JOB' ) from dual
Run Code Online (Sandbox Code Playgroud)

给出以下错误:

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
Run Code Online (Sandbox Code Playgroud)

如果我使用列出我的工作

select * from user_objects where object_type='JOB'
Run Code Online (Sandbox Code Playgroud)

它显示了SAMPLE_JOB(就像它显示了SAMPLE_VIEW,如果过滤了object_type ='VIEW').

为什么它适用于VIEW(以及TABLE,INDEX,TRIGGER,...)而不适用于JOB?

我正在使用Oracle 10g.

dpb*_*ley 12

select dbms_metadata.get_ddl('PROCOBJ', 'yourJobNameGoesHere') from dual;
Run Code Online (Sandbox Code Playgroud)

PROCOBJ是程序对象.