我想为我的大多数数据库对象创建 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(就像它显示 SAMPLE_VIEW 如果过滤为 object_type='VIEW')。
为什么它适用于 VIEW(和 TABLE、INDEX、TRIGGER,...)而不适用于 JOB?
我正在使用 Oracle 10g。