Catégories :

Fonctions utilitaires et de hachage (utilitaire)

GET_DDL

Renvoie une instruction DDL qui peut être utilisée pour recréer l’objet spécifié. Pour les bases de données et les schémas, GET_DDL est récursif, c’est-à-dire qu’il renvoie les instructions DDL pour recréer tous les objets pris en charge dans la base de données / schéma spécifié.

GET_DDL prend actuellement en charge les types d’objet suivants :

Syntaxe

GET_DDL( '<object_type>' , '[<namespace>.]<object_name>' [ , <use_fully_qualified_names_for_recreated_objects> ] )

Arguments

Obligatoire :

type_objet

Spécifie le type d’objet pour lequel le DDL est renvoyé. Les valeurs valides (correspondant aux types d’objet pris en charge) sont :

  • DATABASE

  • SCHEMA

  • TABLE

  • VIEW (y compris pour les vues matérialisées)

  • STREAM

  • TASK

  • SEQUENCE

  • FILE_FORMAT

  • PIPE

  • FUNCTION (pour les UDFs)

  • PROCEDURE (pour les procédures stockées)

espace_noms.nom_objet

Spécifie le nom qualifié complet de l’objet pour lequel le DDL est renvoyé.

L’espace de noms est la base de données et / ou le schéma dans lequel l’objet réside :

  • Non utilisé pour les bases de données.

  • Pour les schémas, prend la forme de la base_données.

  • Pour les objets de schéma (tables, vues, flux, tâches, séquences, formats de fichier, canaux et UDFs), prend la forme d’un schéma de base de données.{} ou d’un schéma.

L’espace de noms est facultatif si une base de données et un schéma sont actuellement utilisés dans la session utilisateur ; sinon, il est obligatoire.

Facultatif :

utiliser_noms_complets_pour_objets_recréés

Si TRUE, les instructions DDL générées utilisent des noms complets pour les objets à recréer.

Par défaut : FALSE.

Note

Cela n’affecte pas les noms des autres objets référencés dans l’instruction DDL (par exemple le nom d’une table référencée dans une définition de vue).

Renvoie

Renvoie une chaîne (VARCHAR) contenant le texte de l’instruction DDL qui a créé l’objet.

Pour les UDFs et les procédures stockées, le résultat peut être légèrement différent de la DDL d’origine. Par exemple, si l’UDF ou la procédure stockée contient le code JavaScript, les caractères de délimitation entourant le code JavaScript peuvent être différents. De même, si l’instruction CREATE PROCEDURE d’origine ne spécifiait pas EXECUTE AS OWNER ni EXECUTE AS CALLER, le résultat de GET_DDL inclurait EXECUTE AS OWNER, car il s’agit de la valeur par défaut.

Notes sur l’utilisation

  • Actuellement, GET_DDL ne prend pas en charge les tables externes.

  • type_objet et nom_objet (y compris espace_noms si spécifié) doivent être entourés de guillemets simples.

  • Pour type_objet, TABLE et VIEW sont interchangeables. Si un type d’objet TABLE est spécifié et que l’objet spécifié par nom est une vue, la fonction renvoie le DDL pour la vue et inversement.

  • Si type_objet est FUNCTION (comme UDF) et que UDF a des arguments, vous devez inclure les types de données d’argument dans le nom de la fonction, sous la forme de 'nom_fonction( [ type_données_arg [ , ... ] ] )'.

  • Si type_objet est PROCEDURE et que la procédure stockée présente des arguments, vous devez inclure les types de données d’argument dans le nom de la fonction, sous la forme de 'nom_procédure( [ type_données_arg [ , ... ] ] )'.

Détails du classement

  • Collation information is included in the input.

Exemples

Renvoyer le DDL utilisé pour créer une vue nommée books_view :

select get_ddl('view', 'books_view');
+-----------------------------------------------------------------------------+ 
| GET_DDL('VIEW', 'BOOKS_VIEW')                                               |
|-----------------------------------------------------------------------------|
|                                                                             |
| create or replace view BOOKS_VIEW as select title, author from books_table; |
|                                                                             |
+-----------------------------------------------------------------------------+

Renvoyer le DDL utilisé pour créer un schéma nommé books_schema et les objets du schéma (la table books_table et la vue books_view) :

select get_ddl('schema', 'books_schema');
+-----------------------------------------------------------------------------+ 
| GET_DDL('SCHEMA', 'BOOKS_SCHEMA')                                           |
|-----------------------------------------------------------------------------|
| create or replace schema BOOKS_SCHEMA;                                      |
|                                                                             |
| create or replace TABLE BOOKS_TABLE (                                       |
| 	ID NUMBER(38,0),                                                      |
| 	TITLE VARCHAR(255),                                                   |
| 	AUTHOR VARCHAR(255)                                                   |
| );                                                                          |
|                                                                             |
| create or replace view BOOKS_VIEW as select title, author from books_table; |
|                                                                             |
+-----------------------------------------------------------------------------+

Renvoyer le DDL qui utilise des noms complets pour les objets à recréer :

select get_ddl('schema', 'books_schema', true);
+---------------------------------------------------------------------------------------------------+
| GET_DDL('SCHEMA', 'BOOKS_SCHEMA', TRUE)                                                           |
|---------------------------------------------------------------------------------------------------|
| create or replace schema BOOKS_DB.BOOKS_SCHEMA;                                                   |
|                                                                                                   |
| create or replace TABLE BOOKS_DB.BOOKS_SCHEMA.BOOKS_TABLE (                                       |
| 	ID NUMBER(38,0),                                                                            |
| 	TITLE VARCHAR(255),                                                                         |
| 	AUTHOR VARCHAR(255)                                                                         |
| );                                                                                                |
|                                                                                                   |
| create or replace view BOOKS_DB.BOOKS_SCHEMA.BOOKS_VIEW as select title, author from books_table; |
|                                                                                                   |
+---------------------------------------------------------------------------------------------------+

Note

Comme illustré dans l’exemple ci-dessus, l’instruction DDL n’utilise pas de nom complet pour la table utilisée pour créer la vue. Pour résoudre le nom de cette table, Snowflake utilise le nom de la base de données et le nom du schéma pour la vue.

Renvoie le DDL utilisé pour créer un UDF nommé multiply ayant deux paramètres de type NUMBER :

select get_ddl('function', 'multiply(number, number)');

--------------------------------------------------+
 GET_DDL('FUNCTION', 'MULTIPLY(NUMBER, NUMBER)')  |
--------------------------------------------------+
 CREATE OR REPLACE "MULTIPLY"(A NUMBER, B NUMBER) |
 RETURNS NUMBER(38,0)                             |
 COMMENT='multiply two numbers'                   |
 AS 'a * b';                                      |
--------------------------------------------------+

Renvoyer la DDL pour créer une procédure stockée nommée stproc_1 comportant un paramètre de type FLOAT :

SELECT GET_DDL('procedure', 'stproc_1(float)');
+---------------------------------------------------+
| GET_DDL('PROCEDURE', 'STPROC_1(FLOAT)')           |
|---------------------------------------------------|
| CREATE OR REPLACE PROCEDURE "STPROC_1"("F" FLOAT) |
| RETURNS FLOAT                                     |
| LANGUAGE JAVASCRIPT                               |
| EXECUTE AS OWNER                                  |
| AS '                                              |
| ''return F;''                                     |
| ';                                                |
+---------------------------------------------------+