【问题标题】:Oracle SQL Developer report to make DDL of DB objectOracle SQL Developer 报告制作 DB 对象的 DDL
【发布时间】:2016-07-07 22:15:22
【问题描述】:

我为 SQL Developer 编写了一份报告,用于生成 DB 对象的 DDL。

SELECT DBMS_METADATA.GET_DDL(UPPER(:OBJECT_TYPE),UPPER(:OBJECT_NAME),UPPER(:OBJECT_SCHEMA)) DDL FROM DUAL
UNION ALL
select DBMS_METADATA.GET_DDL (UPPER('CONSTRAINT'),UPPER(CONSTRAINT_NAME),UPPER(:OBJECT_SCHEMA)) AS "DDL OGGETTI DIPENDENTI" from DBA_CONSTRAINTS where OWNER like UPPER(:OBJECT_SCHEMA) and TABLE_NAME like UPPER(:OBJECT_NAME) and CONSTRAINT_TYPE not like 'R'
UNION ALL
select DBMS_METADATA.GET_DDL (UPPER('REF_CONSTRAINT'),UPPER(CONSTRAINT_NAME),UPPER(:OBJECT_SCHEMA)) from DBA_CONSTRAINTS where OWNER like UPPER(:OBJECT_SCHEMA) and TABLE_NAME like UPPER(:OBJECT_NAME) and CONSTRAINT_TYPE like 'R'
UNION ALL
select DBMS_METADATA.GET_DDL (UPPER('INDEX'),UPPER(INDEX_NAME),UPPER(:OBJECT_SCHEMA)) from DBA_INDEXES where OWNER like UPPER(:OBJECT_SCHEMA) and TABLE_NAME like UPPER(:OBJECT_NAME) 
UNION ALL
select DBMS_METADATA.GET_DEPENDENT_DDL (UPPER('COMMENT'),UPPER(TABLE_NAME),UPPER(:OBJECT_SCHEMA)) from DBA_COL_COMMENTS where OWNER like UPPER(:OBJECT_SCHEMA) and TABLE_NAME like UPPER(:OBJECT_NAME) AND COMMENTS is not null GROUP BY TABLE_NAME
UNION ALL
select DBMS_METADATA.GET_DEPENDENT_DDL (UPPER('OBJECT_GRANT'),UPPER(TABLE_NAME),UPPER(:OBJECT_SCHEMA)) from DBA_TAB_PRIVS where OWNER like UPPER(:OBJECT_SCHEMA) and TABLE_NAME like UPPER(:OBJECT_NAME) GROUP BY TABLE_NAME
UNION ALL
select DBMS_METADATA.GET_DDL (UPPER('SYNONYM'),UPPER(TABLE_NAME),UPPER('PUBLIC')) from DBA_SYNONYMS where TABLE_OWNER like UPPER(:OBJECT_SCHEMA) and TABLE_NAME like UPPER(:OBJECT_NAME) GROUP BY TABLE_NAME
UNION ALL
select DBMS_METADATA.GET_DEPENDENT_DDL (UPPER('TRIGGER'),UPPER(TABLE_NAME),UPPER(:OBJECT_SCHEMA)) from DBA_TRIGGERS where TABLE_OWNER like UPPER(:OBJECT_SCHEMA) and TABLE_NAME like UPPER(:OBJECT_NAME) GROUP BY TABLE_NAME;

函数DBMS_METADATA.GET_DDL的结果类型是CLOB。

问题是当我在记事本或 word 中复制字符串输出时:

  • 如果我选择 TABLE 作为报告样式,则输出的每一行都用“”引用。例如:" CREATE TABLE "MWPROD"."ORDINI" ... TABLESPACE "MWPROD_TBSDAT" ;"
  • 如果我选择 SCRIPT 作为报告样式,某些行会被截断。

我想找到一个解决方案来生成带有完整行且不带引号的干净输出。

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper ddl


    【解决方案1】:

    DDL 被数据库引用 - 这是为了解释白痴开发人员 - 抱歉,使用保留字命名表的开发人员,例如“TABLE”,或者需要区分大小写的对象名称的人

    对于截断的脚本输出,请在脚本中使用SET LONG 命令。

    设置长{80 | } 设置显示 CLOB、LONG、NCLOB 和 XMLType 值的最大宽度(以字节为单位);并用于复制 LONG 值。

    【讨论】:

      猜你喜欢
      • 2013-06-25
      • 2014-05-15
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      相关资源
      最近更新 更多