【问题标题】:Error when retriveing output from dbms_metadata.get_ddl从 dbms_metadata.get_ddl 检索输出时出错
【发布时间】:2018-09-09 09:42:42
【问题描述】:

当我尝试运行以下 SQL 语句时出现错误:

 set long 90000
set heading 999
set lines 100
select 
   dbms_metadata.GET_DDL(u.object_type,u.object_name,'MY_SCHEMA')
from  
   dba_objects u
where  
   owner = 'MY_SCHEMA'
   AND OBJECT_TYPE='TABLE';

错误:

ORA-31600:函数 GET_DDL 中参数 OBJECT_TYPE 的输入值 CHAIN 无效 功能 GET_DDL ORA-06512:在“SYS.DBMS_METADATA”中,第 6069 行 ORA-06512:在“SYS.DBMS_METADATA”中,第 8666 行 ORA-06512:在第 1 行中 31600. 00000 - “函数 %s 中参数 %s 的无效输入值 %s” *原因:为参数提供了 NULL 或无效值。 *操作:更正输入值并再次尝试调用。

您能否提供一些建议,我可以如何检索选择输出。

【问题讨论】:

  • 另外,为什么不只查询 user_tables - dbms_metadata 是一个昂贵的 pkg 调用,也不需要给它一个昂贵的查询来提供它

标签: oracle ddl dbms-output


【解决方案1】:

https://docs.oracle.com/database/121/ARPLS/d_metada.htm#BGBIEDIA

可能的对象类型参数列表。并非列表中的所有元素都等于 dba_objects.object_type。您必须将其翻译为适当的值。
在您的情况下,问题是 chain 对象。通常对于任何调度程序对象,对象类型都是PROCOBJ。但我不知道它是否适用于连锁店。

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

【讨论】:

  • 在 TABLE 上过滤对象类型时,为什么它完全看 CHAIN?
  • 我认为有问题的代码不会导致异常。第一行异常表示OBJECT_TYPE 的输入值为CHAIN
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多