【发布时间】:2020-02-29 07:38:59
【问题描述】:
当我尝试在 pl/sql 块或包过程中调用 dbms_metadata.get_ddl('TABLE', 'MYTABLE', 'MYSCHEMA') 时,它工作正常。
当我尝试在 pl/sql 块或包过程中调用 dbms_metadata.get_ddl('TABLE', 'MYTABLE')(没有明确提供架构)时,它也可以正常工作。
当我尝试在 pl/sql 块中调用 dbms_metadata.get_ddl('DIRECTORY', 'MYDIR')(没有明确提供架构)时,它也可以正常工作。
但是,
当我尝试在 pl/sql 块或包过程中调用 dbms_metadata.get_ddl('DIRECTORY', 'MYDIR', 'MYSCHEMA') 时,它会引发错误:
ORA-31600: invalid input value MYSCHEMA for parameter SCHEMA in function GET_DDL
当我尝试在包过程中调用 dbms_metadata.get_ddl('DIRECTORY', 'MYDIR')(没有明确提供架构)时,它会引发错误:
ORA-31603: object "MYDIR" of type DIRECTORY not found in schema "MYSCHEMA"
有什么问题?
EXECUTE_CATALOG_ROLE=true
SELECT_CATALOG_ROLE=true
'CREATE ANY DIRECTORY'=true
PL/SQL Release 12.2.0.1.0 - Production
【问题讨论】:
-
目录对象没有架构,因此错误消息似乎是合理的。
-
如果将包的AUTHID设置为CURRENT_USER,它是否有效?或者,如果您在
get_ddl调用中指定模式 SYS?
标签: oracle plsql oracle12c dbms-metadata