SnowConvert AI - Références des fonctions pour SQL-Server

ISNUMERIC_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) détermine si une expression est un type numérique valide.

ISNUMERIC_UDF(EXPR VARCHAR)

Paramètres

EXPR VARCHAR

L’expression à évaluer.

Renvoie

Renvoie 1 lorsque l’expression d’entrée est évaluée à un type de données numériques valide ; sinon, elle renvoie 0.

Exemple d’utilisation

Entrée :

SELECT ISNUMERIC_UDF('5');

Sortie :

1

PATINDEX_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) renvoie la position de départ de la première occurrence d’un modèle dans une expression spécifiée ou des zéros si le modèle n’est pas trouvé.

PATINDEX_UDF(PATTERN VARCHAR, EXPRESSION VARCHAR)

Paramètres

PATTERN VARCHAR

Le modèle à rechercher.

EXPRESSION VARCHAR

L’expression en cours d’évaluation.

Renvoie

Renvoie un entier avec la position de départ du modèle.

Exemple d’utilisation

Entrée :

SELECT PATINDEX_UDF('an', 'banana');

Sortie :

2

ERROR_SEVERITY_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) obtient une valeur indiquant la gravité d’une erreur. La valeur par défaut est toujours 16.

ERROR_SEVERITY_UDF()

Paramètres

Aucun paramètre d’entrée.

Renvoie

Renvoie une chaîne avec la valeur associée à ERROR_SEVERITY du nom de la variable SQL.

Exemple d’utilisation

Entrée :

SELECT ERROR_SEVERITY_UDF();

Sortie :

null -- No information set.

TRANSFORM_SP_EXECUTE_SQL_STRING_UDF(STRING, STRING, ARRAY, ARRAY)

Définition

Cette fonction définie par l’utilisateur (UDF) émule le comportement des paramètres intégrés (données de liaison) dans la procédure du système SP_EXECUTESQL en remplaçant directement leurs valeurs dans la chaîne SQL.

En outre, elle supprime les paramètres OUTPUT de la chaîne, car cette opération est effectuée en dehors de EXECUTE IMMEDIATE vers lequel SP_EXECUTESQL sera transformé.

Pour plus d’informations, consultez la spécification de traduction SP_EXECUTESQL.

TRANSFORM_SP_EXECUTE_SQL_STRING_UDF(
    _SQL_STRING STRING,
    _PARAMS_DEFINITION STRING,
    _PARAMS_NAMES ARRAY,
    _PARAMS_VALUES ARRAY
)

Paramètres

_SQL_STRING STRING

La chaîne à transformer.

_PARAMS_DEFINITION STRING

La définition originale des paramètres vérifie l’ordre dans lequel les valeurs des paramètres doivent être attribuées.

_PARAMS_NAMES ARRAY

Le tableau des noms de paramètres qui remplacent les valeurs de la chaîne SQL.

_PARAMS_VALUES ARRAY

Le tableau des valeurs des paramètres à remplacer dans la chaîne SQL.

Renvoie

Renvoie une STRING dont les valeurs des paramètres intégrés ont été remplacées.

Exemple d’utilisation

Entrée :

SELECT TRANSFORM_SP_EXECUTE_SQL_STRING_UDF(
    'SELECT * FROM PERSONS WHERE NAME LIKE (@NAME) AND ID < @id AND AGE < @age;', '@age INT, @id INT, @name VARCHAR(25)',
    ARRAY_CONSTRUCT('', '', ''),
    ARRAY_CONSTRUCT(30, 100, 'John Smith'));

Sortie :

SELECT * FROM PERSONS WHERE NAME LIKE ('John Smith') AND ID < 100 AND AGE < 30;

TABLE_OBJECT_ID_UDF (VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) vérifie si une table portant un nom spécifique a déjà été créée.

TABLE_OBJECT_ID_UDF(NAME VARCHAR)

Paramètres

NAME VARCHAR

Le nom de la table à évaluer.

Renvoie

Renvoie une expression booléenne dépendant de l’existence de la table.

Exemple d’utilisation

Entrée :

SELECT TABLE_OBJECT_ID_UDF('Test');

Sortie :

FALSE

ERROR_PROCEDURE_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) renvoie la valeur associée à ERROR_PROCEDURE du nom de la variable SQL.

ERROR_PROCEDURE_UDF()

Paramètres

Aucun paramètre d’entrée.

Renvoie

Renvoie une chaîne avec la valeur associée à ERROR_PROCEDURE du nom de la variable SQL.

Exemple d’utilisation

Entrée :

SELECT ERROR_PROCEDURE_UDF();

Sortie :

null -- No information set.

DB_ID_UDF(STRING)

Définition

Cette fonction définie par l’utilisateur (UDF) émule la fonctionnalité DB_ID.

DB_ID_UDF(p_database_name STRING)

Paramètres

p_database_name STRING

Le nom de la base de données pour obtenir l’identifiant.

Renvoie

Returns an id which corresponds to the number assigned to the database when it is created. This number is assigned consecutively.

Exemple d’utilisation

Entrée :

SELECT DB_ID_UDF('MY_DATABASE')

Sortie :

6

Avertissement

Si la base de données n’existe pas, elle renvoie null.

ERROR_LINE_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) renvoie la valeur associée à ERROR_LINE du nom de la variable SQL.

ERROR_LINE_UDF()

Paramètres

Aucun paramètre d’entrée.

Renvoie

Renvoie une chaîne avec la valeur associée à ERROR_LINE du nom de la variable SQL.

Exemple d’utilisation

Entrée :

SELECT ERROR_LINE_UDF();

Sortie :

null -- No information set.

FUNCTION_OBJECT_ID_UDF (VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) vérifie si une fonction portant un nom spécifique a déjà été créée.

VIEW_OBJECT_ID_UDF(NAME VARCHAR)

Paramètres

NAME VARCHAR

Le nom de la fonction à évaluer.

Renvoie

Renvoie une expression booléenne dépendant de l’existence de la fonction.

Exemple d’utilisation

Entrée :

SELECT FUNCTION_OBJECT_ID_UDF('Test');

Sortie :

FALSE

CONSTRAINT_OBJECT_ID_UDF (VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) vérifie si une contrainte portant un nom spécifique a déjà été créée.

CONSTRAINT_OBJECT_ID_UDF(NAME VARCHAR)

Paramètres

NAME VARCHAR

Le nom de la contrainte à évaluer.

Renvoie

Renvoie une expression booléenne dépendant de l’existence de la contrainte.

Exemple d’utilisation

Entrée :

SELECT CONSTRAINT_OBJECT_ID_UDF('Test');

Sortie :

FALSE

FOR_XML_UDF (OBJECT, VARCHAR, VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) convertit un objet en XML.

FOR_XML_UDF(OBJ OBJECT, ELEMENT_NAME VARCHAR, ROOT_NAME VARCHAR)

Paramètres

OBJ OBJECT

Objet à convertir.

ELEMENT_NAME VARCHAR

Nom de l’élément à donner à l’objet.

ROOT_NAME VARCHAR

Le nom racine de XML.

Renvoie

Renvoie un varchar au format XML.

Exemple d’utilisation

Entrée :

SELECT
FOR_XML_UDF(OBJECT_CONSTRUCT('id', 1, 'name', 'David'), 'employee', 'employees');

Sortie :

<employees>
    <employee type="OBJECT">
        <id type="INTEGER">1</id>
        <name type="VARCHAR">David</name>
    </employee>
<employees>

OBJECT_ID_UDF (VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) vérifie si un objet portant un nom spécifique a déjà été créé.

OBJECT_ID_UDF(NAME VARCHAR)

Paramètres

NAME VARCHAR

Le nom de l’objet à évaluer.

Renvoie

Renvoie une expression booléenne dépendant de l’existence de l’objet.

Exemple d’utilisation

Entrée :

SELECT OBJECT_ID_UDF('Test');

Sortie :

FALSE

PROCEDURE_OBJECT_ID_UDF (VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) vérifie si une procédure portant un nom spécifique a déjà été créée.

PROCEDURE_OBJECT_ID_UDF(NAME VARCHAR)

Paramètres

NAME VARCHAR

Le nom de la procédure à évaluer.

Renvoie

Renvoie une expression booléenne dépendant de l’existence de la procédure.

Exemple d’utilisation

Entrée :

SELECT PROCEDURE_OBJECT_ID_UDF('Test');

Sortie :

FALSE

ISDATE_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) détermine si la valeur d’entrée est une date valide.

ISDATE_UDF(DATE_VALUE STRING)

Paramètres

DATE_VALUE STRING

La date qui va être évaluée.

Renvoie

Renvoie 1 lorsque l’expression d’entrée est évaluée à un type de données de date valide ; sinon, elle renvoie 0.

Exemple d’utilisation

Entrée :

SELECT ISDATE_UDF('2024-01-26');

Sortie :

1

ERROR_NUMBER_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) renvoie la valeur associée à ERROR_NUMBER du nom de la variable SQL.

ERROR_NUMBER_UDF()

Paramètres

Aucun paramètre d’entrée.

Renvoie

Renvoie une chaîne avec la valeur associée à ERROR_NUMBER du nom de la variable SQL.

Exemple d’utilisation

Entrée :

SELECT ERROR_NUMBER_UDF();

Sortie :

null -- No information set.

OFFSET_FORMATTER (VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) est une fonction auxiliaire de pour le formatage de l’heure de décalage et de son opérateur préfixe.

OFFSET_FORMATTER(offset_hrs VARCHAR)

Paramètres

offset_hrs VARCHAR

La valeur à formater.

Renvoie

Renvoie une valeur de type varchar contenant la sortie formatée pour le décalage.

Exemple d’utilisation

Entrée :

 SELECT OFFSET_FORMATTER('2024-01-26 22:00:50.708 -0800');

Sortie :

2024-01-26 22:00:50.708 -0800

OPENXML_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) génère une requête à partir d’une lecture XML.

OPENXML_UDF(XML VARCHAR, PATH VARCHAR)

Paramètres

XML VARCHAR

Le contenu XML sous forme de varchar.

PATH VARCHAR

Le chemin du nœud à extraire.

Renvoie

Renvoie une table contenant les données générées par la lecture XML.

Exemple d’utilisation

Entrée :

SELECT * FROM TABLE(OPENXML_UDF('<iceCreamOrders>
    <order>
        <customer customerID="CUST001" contactName="Test ABC">
            <iceCreamOrder orderID="ORD001" employeeID="101" orderDate="2023-05-15T14:30:00">
                <iceCreamDetail productID="001" quantity="2"/>
                <iceCreamDetail productID="003" quantity="1"/>
            </iceCreamOrder>
        </customer>
    </order>
    <order>
        <customer customerID="CUST002" contactName="Test XYZ">
            <iceCreamOrder orderID="ORD002" employeeID="102" orderDate="2023-06-20T12:45:00">
                <iceCreamDetail productID="005" quantity="3"/>
                <iceCreamDetail productID="007" quantity="2"/>
            </iceCreamOrder>
        </customer>
    </order>
</iceCreamOrders>
', 'iceCreamOrders:order'));

Sortie :

Value
1{ "order": { "$name": "order", "customer": [ { "customer": { "$name": "customer", "@contactName": "Test ABC", "@customerID": "CUST001", "iceCreamOrder": [ { "iceCreamOrder": { "$name": "iceCreamOrder", "@employeeID": 101, "@orderDate": "2023-05-15T14:30:00", "@orderID": "ORD001", "iceCreamDetail": [ { "iceCreamDetail": { "$name": "iceCreamDetail", "@productID": "001", "@quantity": 2 } }, { "iceCreamDetail": { "$name": "iceCreamDetail", "@productID": "003", "@quantity": 1 } } ] } } ] } } ] } }
2{ "order": { "$name": "order", "customer": [ { "customer": { "$name": "customer", "@contactName": "Test XYZ", "@customerID": "CUST002", "iceCreamOrder": [ { "iceCreamOrder": { "$name": "iceCreamOrder", "@employeeID": 102, "@orderDate": "2023-06-20T12:45:00", "@orderID": "ORD002", "iceCreamDetail": [ { "iceCreamDetail": { "$name": "iceCreamDetail", "@productID": "005", "@quantity": 3 } }, { "iceCreamDetail": { "$name": "iceCreamDetail", "@productID": "007", "@quantity": 2 } } ] } } ] } } ] } }

QUOTENAME_UDF (VARCHAR, VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) crée un identificateur délimité valide pour le serveur SQL en renvoyant une chaîne Unicode à laquelle les délimiteurs ont été ajoutés.

QUOTENAME_UDF(STR VARCHAR, QUOTECHAR VARCHAR)

Paramètres

STR VARCHAR

La chaîne à transformer.

QUOTECHAR VARCHAR

Le délimiteur à ajouter au premier paramètre.

Renvoie

Renvoie un varchar auquel l’identificateur du deuxième paramètre a été ajouté comme délimiteur.

Exemple d’utilisation

Entrée :

SELECT QUOTENAME_UDF('test', '?');

Sortie :

?test?

UPDATE_ERROR_VARS_UDF (STRING, STRING, STRING)

Définition

Cette fonction définie par l’utilisateur (UDF) met à jour les variables d’erreur dans un environnement afin de savoir quand la procédure génère une erreur.

UPDATE_ERROR_VARS_UDF(MESSAGE STRING, SEVERITY STRING, STATE STRING)

Paramètres

STATE STRING

L’état du message d’erreur.

MESSAGE STRING

Le message à afficher dans l’erreur.

SEVERITY STRING

La gravité de l’erreur.

Renvoie

Renvoie une valeur chaîne contenant les nouvelles informations sur le message d’erreur.

Exemple d’utilisation

Entrée :

  SELECT UPDATE_ERROR_VARS_UDF('Message', '1', '1');

Sortie :

1ABC1

ROUND_MILLISECONDS_UDF (TIMESTAMP_TZ)

Définition

Cette fonction définie par l’utilisateur (UDF) est une fonction qui arrondit les millisecondes à des incréments de 0, 3 ou 7 millisecondes. Transact arrondit automatiquement les millisecondes des valeurs temporelles.

ROUND_MILLISECONDS_UDF(INPUT TIMESTAMP_TZ)

Paramètres

INPUT TIMESTAMP_TZ

Le temps d’entrée à arrondir.

Renvoie

Renvoie la même valeur d’entrée TIMESTAMP_TZ mais avec les millisecondes arrondies.

Exemple d’utilisation

Entrée :

SELECT PUBLIC.ROUND_MILLISECONDS_UDF('1900-01-01 00:00:00.995 +0100')

Sortie :

'1900-01-01 00:00:00.997 +0100'

CAST_NUMERIC_TO_TIMESTAMP_TZ_UDF (NUMBER)

Définition

Cette fonction définie par l’utilisateur (UDF) est utilisée pour convertir une valeur numérique en timestamp_tz.

CAST_NUMERIC_TO_TIMESTAMP_TZ_UDF(INPUT NUMBER)

Paramètres

INPUT NUMBER

Le nombre à transmettre.

Renvoie

Retourne un timestamp_tz avec le fuseau horaire actuel.

Exemple d’utilisation

Entrée :

SELECT PUBLIC.CAST_NUMERIC_TO_TIMESTAMP_TZ_UDF(0)

Sortie :

1900-01-01 01:00:00.000 +0100

IDENTITY_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) détermine si une expression est un type numérique valide.

IDENTITY_UDF()

Paramètres

Aucun paramètre d’entrée.

Renvoie

Renvoie une expression entière.

Exemple d’utilisation

Avertissement

Une séquence est générée pour prendre en charge la logique.

Entrée :

IDENTITY_UDF()

Sortie :

1

FOR_XML_UDF (OBJECT, VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) convertit un objet en XML.

FOR_XML_UDF(OBJ OBJECT, ELEMENT_NAME VARCHAR)

Paramètres

OBJ OBJECT

Objet à convertir.

ELEMENT_NAME VARCHAR

Nom de l’élément à donner à l’objet.

Renvoie

Renvoie un varchar au format XML.

Exemple d’utilisation

Entrée :

SELECT
FOR_XML_UDF(OBJECT_CONSTRUCT('id', 1, 'name', 'David'), 'employee');

Sortie :

<employee type="OBJECT">
    <id type="INTEGER">1</id>
    <name type="VARCHAR">David</name>
</employee>

QUOTENAME_UDF (VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) crée un identificateur délimité valide pour le serveur SQL en renvoyant une chaîne Unicode à laquelle les délimiteurs ont été ajoutés.

QUOTENAME_UDF(STR VARCHAR)

Paramètres

STR VARCHAR

La chaîne à transformer.

Renvoie

Renvoie un varchar auquel a été ajouté l’identificateur délimiteur.

Exemple d’utilisation

Entrée :

SELECT QUOTENAME_UDF('test');

Sortie :

"test"

VIEW_OBJECT_ID_UDF (VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) vérifie si une vue portant un nom spécifique a déjà été créée.

VIEW_OBJECT_ID_UDF(NAME VARCHAR)

Paramètres

NAME VARCHAR

Le nom de la vue à évaluer.

Renvoie

Renvoie une expression booléenne dépendant de l’existence de la vue.

Exemple d’utilisation

Entrée :

SELECT VIEW_OBJECT_ID_UDF('Test');

Sortie :

FALSE

SUBTRACT_TIMESTAMP_TZ_UDF (TIMESTAMP_TZ, TIMESTAMP_TZ)

Définition

Cette fonction définie par l’utilisateur (UDF) convertit les deux entrées dans le fuseau horaire de la session du système et soustrait les dates (FIRST_DATE - SECOND_DATE) en prenant 1900-01-01 00:00:00.000 comme valeur zéro. Si aucune valeur n’inclut le fuseau horaire, le fuseau horaire de la session en cours est utilisé.

PUBLIC.SUBTRACT_TIMESTAMP_TZ_UDF(FIRST_DATE TIMESTAMP_TZ, SECOND_DATE TIMESTAMP_TZ)

Paramètres

FIRST_DATE TIMESTAMP_TZ

La première date à laquelle il faut soustraire.

SECOND_DATE TIMESTAMP_TZ

La deuxième date à laquelle il faut soustraire.

Renvoie

Renvoie la différence entre les deux dates d’entrée.

Exemple d’utilisation

Entrée :

SELECT SUBTRACT_TIMESTAMP_TZ_UDF('1900-01-01 00:00:00.000 +0100', '1900-01-01 00:00:00.003 -0100')

Sortie :

1899-12-31 13:59:59.997 -0800

STR_UDF (FLOAT, VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) est un modèle pour traduire la fonctionnalité de SQL Server STR() vers Snowflake lorsqu’elle est utilisée avec un ou deux paramètres optionnels

STR_UDF(FLOAT_EXPR FLOAT, FORMAT VARCHAR)

Paramètres

FLOAT_EXPR FLOAT

L’expression à traiter.

FORMAT VARCHAR

Le format à appliquer.

Renvoie

Renvoie un varchar contenant l’expression formatée.

Exemple d’utilisation

Entrée :

SELECT STR_UDF(1.5, '99');

Sortie :

2

XML_JSON_SIMPLE

Définition

Cette fonction définie par l’utilisateur (UDF) génère un objet contenant les informations issues de l’exécution d’une lecture d’une valeur XML.

XML_JSON_SIMPLE(XML VARIANT)

Paramètres

XML VARIANT

Le XML à lire.

Renvoie

Renvoie un objet contenant les informations traitées à partir de XML.

Exemple d’utilisation

Entrée :

SELECT XML_JSON_SIMPLE(TO_VARIANT(PARSE_XML('<iceCreamOrders>
    <order>
        <customer customerID="CUST001" contactName="Test ABC">
            <iceCreamOrder orderID="ORD001" employeeID="101" orderDate="2023-05-15T14:30:00">
                <iceCreamDetail productID="001" quantity="2"/>
                <iceCreamDetail productID="003" quantity="1"/>
            </iceCreamOrder>
        </customer>
    </order>
    <order>
        <customer customerID="CUST002" contactName="Test XYZ">
            <iceCreamOrder orderID="ORD002" employeeID="102" orderDate="2023-06-20T12:45:00">
                <iceCreamDetail productID="005" quantity="3"/>
                <iceCreamDetail productID="007" quantity="2"/>
            </iceCreamOrder>
        </customer>
    </order>
</iceCreamOrders>
')));

Sortie :

{
  "iceCreamOrders": {
    "$name": "iceCreamOrders",
    "order": [
      {
        "order": {
          "$name": "order",
          "customer": [
            {
              "customer": {
                "$name": "customer",
                "@contactName": "Test ABC",
                "@customerID": "CUST001",
                "iceCreamOrder": [
                  {
                    "iceCreamOrder": {
                      "$name": "iceCreamOrder",
                      "@employeeID": 101,
                      "@orderDate": "2023-05-15T14:30:00",
                      "@orderID": "ORD001",
                      "iceCreamDetail": [
                        {
                          "iceCreamDetail": {
                            "$name": "iceCreamDetail",
                            "@productID": "001",
                            "@quantity": 2
                          }
                        },
                        {
                          "iceCreamDetail": {
                            "$name": "iceCreamDetail",
                            "@productID": "003",
                            "@quantity": 1
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            }
          ]
        }
      },
      {
        "order": {
          "$name": "order",
          "customer": [
            {
              "customer": {
                "$name": "customer",
                "@contactName": "Test XYZ",
                "@customerID": "CUST002",
                "iceCreamOrder": [
                  {
                    "iceCreamOrder": {
                      "$name": "iceCreamOrder",
                      "@employeeID": 102,
                      "@orderDate": "2023-06-20T12:45:00",
                      "@orderID": "ORD002",
                      "iceCreamDetail": [
                        {
                          "iceCreamDetail": {
                            "$name": "iceCreamDetail",
                            "@productID": "005",
                            "@quantity": 3
                          }
                        },
                        {
                          "iceCreamDetail": {
                            "$name": "iceCreamDetail",
                            "@productID": "007",
                            "@quantity": 2
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    ]
  }
}

FORMATMESSAGE_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) fournit les fonctionnalités de la fonction FORMATMESSAGE de SQL Server. Il construit un message à partir d’un message existant issu d’une chaîne fournie.

FORMATMESSAGE_UDF(MESSAGE STRING, ARGS ARRAY)

Paramètres

MESSAGE STRING

La chaîne du message existant.

ARGS ARRAY

Les arguments à ajouter à la première chaîne de messages.

Renvoie

Renvoie une chaîne contenant le message concaténé correspondant aux positions de l’argument.

Exemple d’utilisation

Entrée :

SELECT FORMATMESSAGE_UDF('Test %s!', TO_ARRAY('a'));

Sortie :

Test a!

IS_MEMBER_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) détermine l’appartenance à un groupe de fenêtres en examinant un jeton d’accès.

IS_MEMBER_UDF(ROLE STRING)

Paramètres

ROLE STRING

Le nom du rôle à vérifier.

Renvoie

Renvoie une expression booléenne sur true si l’utilisateur actuel est membre du rôle ; sinon renvoie false.

Exemple d’utilisation

Entrée :

SELECT IS_MEMBER_UDF('TEST');

Sortie :

FALSE

RAISERROR_UDF (DOUBLE, DOUBLE, DOUBLE, ARRAY)

Définition

Cette fonction définie par l’utilisateur (UDF) lance une exception avec un message spécifique.

RAISERROR_UDF(MSG_ID DOUBLE, SEVERITY DOUBLE, STATE DOUBLE, PARAMS ARRAY)

Paramètres

MSG_ID DOUBLE

Le ID du message du message d’erreur.

SEVERITY DOUBLE

Le numéro de gravité de l’erreur.

STATE DOUBLE

Le numéro d’état du message d’erreur.

PARAMS ARRAY

Les informations complémentaires du message d’erreur.

Renvoie

Renvoie un message d’erreur sous la forme d’une variable.

Exemple d’utilisation

Entrée :

SELECT RAISERROR_UDF(2.1, 1.6, 1.0, array_construct('More information'));

Sortie :

MESSAGE: 2.1, LEVEL: 1.6, STATE: 1

STR_UDF(FLOAT)

Définition

Cette fonction définie par l’utilisateur (UDF) est un modèle pour traduire la fonctionnalité de SQL Server STR() vers Snowflake lorsqu’elle est utilisée avec un ou deux paramètres optionnels

STR_UDF(FLOAT_EXPR FLOAT, FORMAT VARCHAR)

Paramètres

FLOAT_EXPR FLOAT

L’expression à traiter.

Renvoie

Renvoie un varchar contenant l’expression formatée.

Exemple d’utilisation

Entrée :

SELECT STR_UDF(1.5);

Sortie :

2

SWITCHOFFSET_UDF (TIMESTAMP_TZ, VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) renvoie un nouvel horodatage_tz avec le temps ajusté pour le paramètre target_tz.

SWITCHOFFSET_UDF(source_timestamp TIMESTAMP_TZ, target_tz varchar)

Paramètres

source_timestamp TIMESTAMP_TZ

L’horodatage source à ajuster.

target_tz varchar

Le temps cible à prendre.

Renvoie

Renvoie l’heure cible formatée sous la forme TIMESTAMP_TZ.

Exemple d’utilisation

Entrée :

SELECT SWITCHOFFSET_UDF(time_in_paris, '-0600') as time_in_costa_rica;

Sortie :

time_in_paris

time_in_costa_rica

2022-10-05 22:00:24.467 +02:00

2022-10-05 14:00:24.467 -06:00

GET_CURRENT_TIMEZONE_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) permet d’obtenir le fuseau horaire de la session ou du système actuel sous la forme d’un littéral.

GET_CURRENT_TIMEZONE_UDF()

Paramètres

Aucun paramètre.

Renvoie

Renvoie une valeur littérale avec le fuseau horaire de la session ou du système en cours sous forme littérale.

Exemple d’utilisation

Entrée :

SELECT PUBLIC.GET_CURRENT_TIMEZONE_UDF();

Sortie :

'Europe/London'

UPDATE_ERROR_VARS_UDF (STRING, STRING, STRING, STRING, STRING, STRING)

Définition

Cette fonction définie par l’utilisateur (UDF) met à jour les variables d’erreur dans un environnement afin de savoir quand la procédure génère une erreur.

UPDATE_ERROR_VARS_UDF(LINE STRING,CODE STRING, STATE STRING, MESSAGE STRING, PROC_NAME STRING, SEVERITY STRING)

Paramètres

LINE STRING

La ligne relative à l’erreur.

CODE STRING

Le code d’erreur associé au message d’erreur.

STATE STRING

L’état du message d’erreur.

MESSAGE STRING

Le message à afficher dans l’erreur.

PROC_NAME STRING

Le nom de la procédure.

SEVERITY STRING

La gravité de l’erreur.

Renvoie

Renvoie une valeur chaîne contenant les nouvelles informations sur le message d’erreur.

Exemple d’utilisation

Entrée :

  SELECT UPDATE_ERROR_VARS_UDF('1', '1', '1', 'ABC', 'TEST', '1');

Sortie :

111ABCTEST1

SEQUENCE_OBJECT_ID_UDF (VARCHAR)

Définition

Cette fonction définie par l’utilisateur (UDF) vérifie si une séquence portant un nom spécifique a déjà été créée.

SEQUENCE_OBJECT_ID_UDF(NAME VARCHAR)

Paramètres

NAME VARCHAR

Le nom de la séquence à évaluer.

Renvoie

Renvoie une expression booléenne dépendant de l’existence de la séquence.

Exemple d’utilisation

Entrée :

SELECT SEQUENCE_OBJECT_ID_UDF('Test');

Sortie :

FALSE

CAST_TIMESTAMP_TZ_TO_NUMERIC_UDF (TIMESTAMP_TZ)

Définition

Cette fonction définie par l’utilisateur (UDF) est utilisée pour convertir timestamp_tz en numérique. Il convertit le fuseau horaire actuel en UTC car la valeur numérique ne peut pas sauvegarder l’information de l”horodatage.

CAST_TIMESTAMP_TZ_TO_NUMERIC_UDF(INPUT TIMESTAMP_TZ)

Paramètres

INPUT TIMESTAMP_TZ

L”horodatage de l’entrée qui va être transmis.

Renvoie

Renvoie un numérique avec un point décimal. La partie entière représente le nombre de jours à partir de 1900-01-01 et la partie décimale est le pourcentage de millisecondes dans 24 heures.

Exemple d’utilisation

Entrée :

SELECT PUBLIC.CAST_TIMESTAMP_TZ_TO_NUMERIC_UDF('1900-01-01 01:00:00.000 +0100')

Sortie :

0

RAISERROR_UDF (VARCHAR, DOUBLE, DOUBLE, ARRAY)

Définition

Cette fonction définie par l’utilisateur (UDF) lance une exception avec un message spécifique.

RAISERROR_UDF(MSG_TEXT VARCHAR, SEVERITY DOUBLE, STATE DOUBLE, PARAMS ARRAY)

Paramètres

MSG_TEXT VARCHAR

Le texte du message d’erreur.

SEVERITY DOUBLE

Le numéro de gravité de l’erreur.

STATE DOUBLE

Le numéro d’état du message d’erreur.

PARAMS ARRAY

Les informations complémentaires du message d’erreur.

Renvoie

Renvoie un message d’erreur sous la forme d’une variable.

Exemple d’utilisation

Entrée :

SELECT RAISERROR_UDF('<\<%*.*s>> TEST', 1.0, 1, array_construct());

Sortie :

MESSAGE: <<undefined>> TEST, LEVEL: 1, STATE: 1

PARSENAME_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) obtient l’index PART_NUMBER d’une chaîne séparée par '.'.

PARSENAME_UDF(STR VARCHAR, PART_NUMBER INT)

Paramètres

STR VARCHAR

Le nom de l’objet sous forme de chaîne.

PART_NUMBER INT

La partie du nom de l’objet à vérifier.

Renvoie

Renvoie la partie spécifiée d’un nom d’objet.

Exemple d’utilisation

Entrée :

SELECT PARSENAME_UDF('Test_A.Test_B.Test_C]', 2);

Sortie :

Test_B

ERROR_STATE_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) obtient l’état d’erreur quel que soit le nombre de fois où elle est exécutée ou l’endroit où elle est exécutée dans le champ d’application du bloc CATCH.

ERROR_STATE_UDF()

Paramètres

Aucun paramètre d’entrée.

Renvoie

Renvoie la chaîne avec l’état d’erreur, quel que soit le nombre de fois où elle est exécutée ou l’endroit où elle est exécutée dans le champ d’application du bloc CATCH.

Exemple d’utilisation

Entrée :

SELECT ERROR_STATE_UDF();

Sortie :

null -- No information set.

CAST_TIME_TO_TIMESTAMP_TZ_UDF (TIME)

Définition

Cette fonction définie par l’utilisateur (UDF) transforme time en timestamp_tz.

CAST_TIME_TO_TIMESTAMP_TZ_UDF(INPUT TIME)

Paramètres

INPUT TIME

L’heure d’entrée à convertir en timestamp_tz.

Renvoie

Renvoie un timestamp_tz avec la date 1900-01-01 et la même heure que l’entrée.

Exemple d’utilisation

Entrée :

SELECT PUBLIC.CAST_TIME_TO_TIMESTAMP_TZ_UDF('00:00:00.995')

Sortie :

1900-01-01 00:00:00.997

SUM_TIMESTAMP_TZ_UDF (TIMESTAMP_TZ, TIMESTAMP_TZ)

Définition

Cette fonction définie par l’utilisateur (UDF) convertit les deux entrées dans le fuseau horaire du système ou de la session et additionne les dates en prenant 1900-01-01 00:00:00.000 comme valeur zéro. Si aucune valeur n’inclut le fuseau horaire, le fuseau horaire de la session en cours est utilisé.

SUM_TIMESTAMP_TZ_UDF(FIRST_DATE TIMESTAMP_TZ, SECOND_DATE TIMESTAMP_TZ)

Paramètres

FIRST_DATE TIMESTAMP_TZ

La première date à ajouter.

SECOND_DATE TIMESTAMP_TZ

La deuxième date à ajouter.

Renvoie

Renvoie la somme entre les deux dates d’entrée.

Exemple d’utilisation

Entrée :

SELECT SUM_TIMESTAMP_TZ_UDF('1900-01-01 00:00:00.000 +0100', '1900-01-01 00:00:00.003 -0100')

Sortie :

1900-01-01 00:00:00.003 +0000

GET_WEEK_START_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) récupère la configuration WEEK_START, qui est équivalente à la fonction @@FIRSTDATE. Pour maintenir une cohérence entre les plateformes, assurez-vous que le paramètre WEEK_START correspond à la définition DATEFIRST dans Transact-SQL.

GET_WEEK_START_UDF()

Renvoie

Renvoie un nombre représentant le premier jour de la semaine.

Exemple d’utilisation

La valeur par défaut de Snowflake pour WEEK_START est 0. Cependant, cette fonction renvoie 7 pour s’aligner sur la valeur DATEFIRST par défaut dans Transact-SQL, ce qui garantit un comportement cohérent.

Entrée :

SELECT GET_WEEK_START_UDF();

Sortie :

7

DATE_PART_WEEK_DAY_UDF

Définition

Cette fonction définie par l’utilisateur (UDF) obtient le jour de la semaine sous la forme d’un nombre (1-7). Pour assurer une cohérence entre les plateformes, veuillez définir le paramètre WEEK_START sur la même valeur que la définition DATEFIRST dans Transact-SQL.

DATE_PART_WEEK_DAY_UDF(INPUT DATE)

Paramètres

INPUT DATE

Date pour obtenir le jour.

Renvoie

Renvoie un nombre représentant le jour de la semaine où lundi = 1, mardi = 2, …, dimanche = 7.

Exemple d’utilisation

Le paramètre WEEK_START est 0. Par conséquent, l’DATE_PART_WEEK_DAY_UDF renvoie une valeur de 1.

Entrée :

SELECT PUBLIC.DATE_PART_WEEK_DAY_UDF('2025-08-17') AS "Sunday";

Sortie :

1

SCOPE_IDENTITY()

Définition

The SCOPE_IDENTITY() function in SQL Server returns the last identity value inserted into an identity column in the same scope. SnowConvert AI transforms this function into a time-travel query using AT(STATEMENT =>) to retrieve the identity value from the most recent INSERT statement.

Transformation Pattern

SQL Server:

INSERT INTO TableName (Column1) VALUES (Value1);
SET @VariableName = SCOPE_IDENTITY();

Snowflake:

INSERT INTO TableName (Column1) VALUES (Value1);
LET _scope_identity_query_id VARCHAR := LAST_QUERY_ID();
VariableName := (SELECT MAX(IdentityColumn) FROM TableName AT(STATEMENT => _scope_identity_query_id));

Requirements

  • Only works within procedural contexts (stored procedures, functions) that are transformed to SnowScript

  • Requires an identity column defined on the target table using IDENTITY(seed, increment)

  • The preceding INSERT statement must target a table with a resolvable identity column in the symbol table

Usage Example

Input (SQL Server):

CREATE TABLE Orders (OrderID INT IDENTITY(1,1), CustomerID INT);
GO

CREATE PROCEDURE InsertOrder @CustomerID INT
AS
BEGIN
    DECLARE @OrderID INT;
    INSERT INTO Orders (CustomerID) VALUES (@CustomerID);
    SET @OrderID = SCOPE_IDENTITY();
    SELECT @OrderID;
END;

Output (Snowflake):

CREATE OR REPLACE TABLE Orders (
  OrderID INT IDENTITY(1, 1) ORDER,
  CustomerID INT
)
;

CREATE OR REPLACE PROCEDURE InsertOrder (CUSTOMERID INT)
RETURNS TABLE()
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
  DECLARE
    ORDERID INT;
    ProcedureResultSet RESULTSET;
  BEGIN

    INSERT INTO Orders (CustomerID) VALUES (:CUSTOMERID);
    LET _scope_identity_query_id VARCHAR := LAST_QUERY_ID();
    ORDERID :=
      SELECT
        MAX(OrderID)
      FROM
        Orders AT (STATEMENT => _scope_identity_query_id);
    ProcedureResultSet := (SELECT
      :ORDERID);
    RETURN TABLE(ProcedureResultSet);
  END;
$$;

Known Limitations

Nested Scope Edge Case

When SCOPE_IDENTITY() is used inside a nested BEGIN...END block while the INSERT statement is in the outer procedure body, the transformation may not detect the INSERT correctly:

CREATE PROCEDURE Example
AS
BEGIN
    INSERT INTO Orders (CustomerID) VALUES (@CustomerID);  -- outer scope
    BEGIN
        DECLARE @OrderID INT;
        SET @OrderID = SCOPE_IDENTITY();  -- inner scope
    END;
END;

In this case, SnowConvert AI may generate SSC-EWI-TS0095 indicating that no preceding INSERT was found, even though one exists at a different nesting level. This is a known limitation tracked for future enhancement.

Workaround: Refactor the code to keep SCOPE_IDENTITY() in the same block as the INSERT statement.

Batch Context

SCOPE_IDENTITY() is not transformed in batch contexts (scripts outside of procedures/functions). In such cases, the original function call is preserved with SSC-EWI-0073.

Additional Notes

  • The AT(STATEMENT =>) time-travel clause may return incorrect results under high-concurrency scenarios where multiple sessions insert into the same table simultaneously

  • For more information about time-travel queries, see the Snowflake documentation