Создание сценария DDL для объекта без имени схемы, запеченного с использованием DBMS_METADATA.GET_DDL? - PullRequest
8 голосов
/ 22 июля 2011

Как я могу сгенерировать сценарий DDL для моего объекта с DBMS_METADATA.GET_DDL без запеченного имени схемы?

С DBMS_METADATA.GET_DDL:

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

Разработчик SQL может сделать это,и я думаю, что он также использует DBMS_METADATA для достижения этой цели и генерирует сценарии DDL.

С SQL Developer:

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

Ответы [ 2 ]

16 голосов
/ 30 июля 2015

Недавно я наткнулся на следующее, которое позволяет вам получить ddl без имени схемы.

Это выглядит намного проще, чем любой другой способ, который я видел до сих пор, хотя он не включен ни в одну документацию Oracle.Я заметил это в журнале инструкций в SQL Developer, который генерирует ddl без имени схемы.

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

Вам не нужно получать дескрипторы или что-нибудь неприятное, просто EXEC выше, прежде чем вызывать DBMS_METADATA.GET_DDL

6 голосов
/ 22 июля 2011

Использовать SET_REMAP_PARAM с параметром REMAP_SCHEMA:

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

Это отобразит схему HR на NULL (хотя вам понадобится дескриптор задания);полный пример см. в документации metadata_api

.
...