6

ほとんどのデータベースオブジェクトのddlスクリプトを作成したいと思います。dbms_metadata.get_ddlは、ほとんどのオブジェクトタイプで機能します。たとえば、以下はビューのddlを作成します。

select dbms_metadata.get_ddl ( 'VIEW', 'SAMPLE_VIEW') from dual

一方、object_type'JOB'では機能しません。以下:

select dbms_metadata.get_ddl( 'JOB', 'SAMPLE_JOB' ) from dual

次のエラーが発生します。

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

を使用して自分の仕事を一覧表示する場合

select * from user_objects where object_type='JOB'

SAMPLE_JOBが表示されます(object_type ='VIEW'でフィルタリングされた場合にSAMPLE_VIEWが表示されるのと同じです)。

JOBではなくVIEW(およびTABLE、INDEX、TRIGGERなど)で機能するのはなぜですか?

Oracle10gを使用しています。

4

4 に答える 4

12
select dbms_metadata.get_ddl('PROCOBJ', 'yourJobNameGoesHere') from dual;

PROCOBJ は手続き型オブジェクトです。

于 2010-07-13T12:37:49.347 に答える
3
select dbms_metadata.get_ddl('PROCOBJ',['JOB'|'PROGRAM'|'SCHEDULE'],'OWNER') from dual;

PROCOBJJOB、PROGRAM、および SCHEDULE を指定できます。

于 2016-06-04T12:54:45.060 に答える