【问题标题】:How to extract sequence ddl in Oracle DB如何在 Oracle DB 中提取序列 ddl
【发布时间】:2013-07-10 11:41:18
【问题描述】:

尝试在此查询中使用此函数为序列提取 ddl 时遇到问题:

select dbms_metadata.get_dependent_ddl('SEQUENCE', base_object_name) from dual;

base_object_name - 触发器的名称,使用序列。 结果:ora-31604 OBJECT_TYPE 'SEQUENCE' 的名称参数 NAME "BASE_OBJECT_NAME" 无效

例如当我执行这个查询时:

select dbms_metadata.get_dependent_ddl('INDEX', base_table_name) from dual;

结果我有指定表的索引。

请帮忙,如何使用get_dependent_ddl()函数提取序列ddl?

【问题讨论】:

    标签: oracle11g extract ddl


    【解决方案1】:

    序列不依赖于表,因此您需要使用select dbms_metadata.get_ddl('SEQUENCE', 'SEQ_NAME') from dual; 来检索其ddl。

    【讨论】:

    • 不显示任何结果。我确实有序列,为了确保命令正常工作,我尝试了不正确的序列名称,上面的命令显示未找到该序列。但是使用正确的名称,我看不到任何结果。请帮忙。
    • @lupchiazoem 也许您的序列在不同的模式中? dbms_metadata.get_ddl 函数还接受 schema 参数,该参数默认为调用者的架构。
    • 可能会,会检查并告知。 ▲
    【解决方案2】:

    序列不依赖于触发器。它是一个单独的对象,不需要其他对象即可存在。改用 DBMS_METADATA 上的GET_DDL 子程序:

    select dbms_meta_data.get_ddl('SEQUENCE',sequence_name) from dual
    

    【讨论】:

    • 谢谢,我知道get_ddl()函数
    猜你喜欢
    • 1970-01-01
    • 2014-10-16
    • 2011-10-05
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2015-09-20
    相关资源
    最近更新 更多