10
votes

Génération de script DDL pour objet sans nom de schéma cuit à l'aide de dbms_metadata.get_ddl?

Comment puis-je générer le script DDL pour mon objet avec dbms_metadata.get_ddl code> sans le nom de schéma cuite au-dessus?

avec dbms_metadata.get_ddl code>: P>

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


2 commentaires

Voici un exemple ... MYORACLESUPPORTS.COM/Content/...


L'exemple de lien ne fonctionne plus, voici une version archivée


3 Réponses :


8
votes

Utilisez SET_REMAP_PARAM avec l'option Remap_schema:

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


1 commentaires

Cette réponse n'a pas fonctionné pour moi. La réponse avec Emit_schema a bien fonctionné.



21
votes

Je suis récemment tombé sur ce qui suit, ce qui vous permet d'obtenir DDL sans le nom du schéma.

Il semble beaucoup plus simple que tout autre moyen que j'ai vu jusqu'à présent, bien que cela ne soit inclus dans aucune documentation Oracle. Je l'ai repéré dans les instructions Connexion au développeur SQL, qui génère DDL sans le nom du schéma. P>

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


2 commentaires

Belle trouvaille, plus facile / plus simple que ma solution!


Cela a travaillé pour moi mais la réponse acceptée n'a pas. (J'utilise Oracle 19.)



1
votes

En plus de supprimer le schéma (comme suggéré par David Norris ci-dessus), si vous souhaitez supprimer le stockage et d'autres attributs. Fondamentalement, juste un DDL uni, puis utilisez ci-dessous:

BEGIN
DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'SQLTERMINATOR', TRUE);
DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'PRETTY', TRUE);
DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'SEGMENT_ATTRIBUTES', FALSE);
DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'STORAGE', FALSE);      
DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'EMIT_SCHEMA', FALSE);
END;


0 commentaires