2011-07-21 32 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

相關問題