使用DBMS_METADATA.GET_DDL为没有模式名称的对象生成DDL脚本?

Pal*_*esz 8 oracle dbms-metadata

如何在DBMS_METADATA.GET_DDL没有模式名称的情况下为我的对象生成DDL脚本?

DBMS_METADATA.GET_DDL:

CREATE TABLE "MYSCHEMA"."MYTABLE"
(
  "COL1"  NUMBER(10,0)
)
Run Code Online (Sandbox Code Playgroud)

SQL Developer可以做到这一点,我认为它也使用DBMS_METADATA来实现这个目标并生成DDL脚本.

使用SQL Developer:

CREATE TABLE "MYTABLE"
(
  "COL1"  NUMBER(10,0)
)
Run Code Online (Sandbox Code Playgroud)

小智 16

我最近偶然发现了以下内容,它允许您获取没有架构名称的ddl.

它看起来比我目前为止看到的任何其他方式简单得多,尽管它没有包含在任何Oracle文档中.我在SQL Developer的语句日志中发现了它,它生成了没有模式名称的ddl.

DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM, 'EMIT_SCHEMA', false);
Run Code Online (Sandbox Code Playgroud)

在调用DBMS_METADATA.GET_DDL之前,您不需要获取句柄或任何令人讨厌的EXEC上面的内容


Fra*_*itt 6

将SET_REMAP_PARAM与REMAP_SCHEMA选项一起使用:

DBMS_METADATA.SET_REMAP_PARAM(th,'REMAP_SCHEMA','HR',NULL);
Run Code Online (Sandbox Code Playgroud)

这会将HR模式映射为NULL(但是,您需要一个作业句柄); 有关完整示例,请参阅metadata_api文档