2011-07-21 35 views
7

如何在DBMS_METADATA.GET_DDL未生成架构名称的情况下为我的对象生成DDL脚本?为没有使用DBMS_METADATA.GET_DDL烘焙的模式名称的对象生成DDL脚本?

随着DBMS_METADATA.GET_DDL

CREATE TABLE "MYSCHEMA"."MYTABLE" 
(
    "COL1" NUMBER(10,0) 
) 

SQL Developer可以做到这一点,我认为它也使用DBMS_METADATA才达到这一目标,兴业DDL脚本。

使用SQL Developer:

CREATE TABLE "MYTABLE" 
(
    "COL1" NUMBER(10,0) 
) 
+1

这里有一个例子之前得到手柄或讨厌的东西只是EXEC以上... http://www.myoraclesupports.com/content/how-让 - 使用 - dbmsmetadatagetddl对象-DDL语句,而无需-有对象所有者-DDL –

回答

6

使用SET_REMAP_PARAM与REMAP_SCHEMA选项:

DBMS_METADATA.SET_REMAP_PARAM(th,'REMAP_SCHEMA','HR',NULL); 

这将HR模式映射到NULL(你需要一份工作手柄,虽然);有关完整的示例,请参见metadata_api documentation

11

我最近偶然发现了以下问题,它允许您在没有模式名称的情况下获取ddl。

它看起来比迄今为止我见过的任何其他方式都简单得多,尽管它未包含在任何Oracle文档中。我发现它在SQL Developer中的语句日志中,它生成没有模式名称的ddl。

DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM, 'EMIT_SCHEMA', false); 

你不需要调用DBMS_METADATA.GET_DDL

相关问题