Kategorien:

Hilfsprogramm- und Hashfunktionen (Dienstprogramm)

GET_DDL

Gibt eine DDL-Anweisung zurück, mit der sich das angegebene Objekt neu erstellen lässt. Bei Datenbanken und Schemas ist GET_DDL rekursiv, d. h. es werden die DDL-Anweisungen zur Neuerstellung aller unterstützten Objekte in der angegebenen Datenbank/im angegebenen Schema zurückgegeben.

GET_DDL unterstützt derzeit folgende Objekttypen:

Syntax

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

Argumente

Erforderlich:

Objekttyp

Gibt den Objekttyp an, für den die DDL zurückgegeben wird. Gültige Werte (entsprechend den unterstützten Objekttypen) sind:

  • DATABASE

  • SCHEMA

  • TABLE

  • VIEW (einschließlich für materialisierte Ansichten)

  • STREAM

  • TASK

  • SEQUENCE

  • FILE_FORMAT

  • PIPE

  • FUNCTION (für UDFs)

  • PROCEDURE (für gespeicherte Prozeduren)

Namespace.Objektname

Gibt den vollqualifizierten Namen des Objekts an, für das die DDL zurückgegeben wird.

Namespace ist die Datenbank und/oder das Schema, in der bzw. dem sich das Objekt befindet:

  • Wird nicht für Datenbanken genutzt.

  • Bei Schemas liegt die Form Datenbank vor.

  • Für Schemaobjekte (Tabellen, Ansichten, Sequenzen, Dateiformate und UDFs) wird Datenbank.Schema oder Schema verwendet.

Namespace ist optional, wenn in der Benutzersitzung aktuell eine Datenbank und ein Schema verwendet werden. Andernfalls ist er erforderlich.

Optional:

vollqualifizierte_Namen_für_neu_erstellte_Objekte_verwenden

Bei TRUE werden in den generierten DDL-Anweisungen vollqualifizierte Namen für die neu zu erstellenden Objekte verwendet.

Standard: FALSE.

Bemerkung

Dies hat keine Auswirkungen auf die Namen anderer Objekte, auf die in der DDL-Anweisung verwiesen wird (z. B. den Namen einer Tabelle, auf die in einer Ansichtsdefinition verwiesen wird).

Rückgabewerte

Gibt eine Zeichenfolge (VARCHAR) zurück, die den Text der DDL-Anweisung enthält, mit der das Objekt erstellt wurde.

Bei UDFs und gespeicherten Prozeduren kann sich die Ausgabe geringfügig von der ursprünglichen DDL unterscheiden. Wenn beispielsweise die UDF oder die gespeicherte Prozedur JavaScript-Code enthält, können sich die Trennzeichen um den JavaScript-Code unterscheiden. Wenn in der ursprünglichen CREATE PROCEDURE-Anweisung weder EXECUTE AS OWNER noch EXECUTE AS CALLER angegeben wurden, enthält die Ausgabe von GET_DDL auch EXECUTE AS OWNER, da dies die Standardeinstellung ist.

Nutzungshinweise

  • Derzeit unterstützt GET_DDL keine externen Tabellen.

  • Objekttyp und Objektname (einschließlich Namespace, falls angegeben) müssen in einfache Anführungszeichen gesetzt werden.

  • Bei Objekttyp sind TABLE und VIEW austauschbar. Wenn ein TABLE-Objekttyp angegeben und das per Name festgelegte Objekt eine Ansicht ist, gibt die Funktion die DDL für die Ansicht zurück und umgekehrt.

  • Wenn Objekttyp eine FUNCTION (d. h. UDF) ist und die UDF Argumente aufweist, müssen Sie die Argumentdatentypen als Teil des Funktionsnamens einschließen, und zwar im Format 'Funktionsname( [ Datentyp_des_Arguments [ , ... ] ] )'.

  • Wenn Objekttyp eine PROCEDURE ist und die gespeicherte Prozedur Argumente aufweist, müssen Sie die Argumentdatentypen als Teil des Funktionsnamens einschließen, und zwar im Format 'Prozedurname( [ Datentyp_des_Arguments [ , ... ] ] )'.

Sortierungsdetails

  • Collation information is included in the input.

Beispiele

Zurückgeben der DDL, die zum Erstellen einer Ansicht namens books_view verwendet wurde:

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

Zurückgeben der DDL, die zum Erstellen eines Schemas mit dem Namen books_schema und der Objekte im Schema (die Tabelle books_table und die Ansicht books_view) verwendet wurde:

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; |
|                                                                             |
+-----------------------------------------------------------------------------+

Zurückgeben der DDL, die vollqualifizierte Namen für die neu zu erstellenden Objekte verwendet:

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; |
|                                                                                                   |
+---------------------------------------------------------------------------------------------------+

Bemerkung

Wie im obigen Beispiel gezeigt, verwendet die DDL-Anweisung keinen vollqualifizierten Namen für die Tabelle, die zum Erstellen der Ansicht verwendet wird. Um den Namen dieser Tabelle aufzulösen, verwendet Snowflake den Namen der Datenbank und den Namen des Schemas dieser Ansicht.

Zurückgeben der DDL, die zum Erstellen einer UDF mit dem Namen multiply verwendet wurde, die zwei Parameter vom Typ NUMBER enthält:

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';                                      |
--------------------------------------------------+

Zurückgeben der DDL, die zum Erstellen einer gespeicherten Prozedur mit dem Namen stproc_1 verwendet wurde, die einen Parameter vom Typ FLOAT aufweist:

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;''                                     |
| ';                                                |
+---------------------------------------------------+