SnowConvert AI - Serveur SQL-Azure Synapse - CREATE PROCEDURE (Exécution de scripts Snowflake)¶
Transaction BEGIN et COMMIT¶
Référence de traduction pour convertir la transaction Transact-SQL BEGIN et COMMIT en Snowflake SQL
Applies to
SQL Server
Azure Synapse Analytics
Description¶
Snowflake SQL, une transaction peut être lancée explicitement par l’exécution d’une instruction BEGIN. Snowflake prend en charge les synonymes BEGINWORK et BEGINTRANSACTION. Snowflake recommande d’utiliser BEGINTRANSACTION.
A transaction can be ended explicitly by executing COMMIT. For more information, see the Snowflake Transactions documentation.
Modèles d’échantillons de sources¶
Les exemples suivants détaillent les instructions de transaction BEGIN et COMMIT.
Transact-SQL¶
BEGIN/COMMIT TRANSACTION¶
Transaction Begin/Commit avec étiquette¶
Snowflake SQL¶
BEGIN/COMMIT¶
Transaction BEGIN/COMMIT avec étiquette¶
Problèmes connus¶
Les transactions imbriquées ne sont pas prises en charge par Snowflake. Pour plus d’informations, consultez la documentation suivante : https://docs.snowflake.com/en/sql-reference/transactions
CALL¶
Référence de traduction pour l’instruction CALL
Applies to
SQL Server
Azure Synapse Analytics
Description¶
The CALL statement is not supported in Snowflake Scripting since this is part of the ODBC API and not a SQL statement, therefore this statement is not translated.
CASE¶
Référence de traduction pour convertir l’expression Case Transact-SQL en Exécution de scripts Snowflake
Applies to
SQL Server
Azure Synapse Analytics
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Transact-SQL propose deux formats possibles pour l’expression Case, tous deux destinés à l’évaluation d’expressions et à l’obtention conditionnelle de résultats. La première fait référence à une expression Case simple qui sera évaluée si une expression d’entrée correspond à une ou plusieurs expressions de sortie. La seconde évaluera chaque expression booléenne indépendamment. La clause else est prise en charge dans les deux formats.
Selon la documentation officielle du cas Transact-SQL:
CASE peut être utilisé dans toute instruction ou clause qui autorise une expression valide. Par exemple, vous pouvez utiliser CASE dans des instructions telles que SELECT, UPDATE, DELETE et SET, et dans des clauses telles que select_list, IN, WHERE, ORDER BY et HAVING.
For more information, see the Transact-SQL CASE documentation.
Remarque : Transact-SQL permet d’encapsuler facultativement l’expression d’entrée et l’expression booléenne entre parenthèses ; Snowflake Scripting également.
Modèles d’échantillons de sources¶
Les exemples suivants détaillent deux scénarios dans lesquels l’expression Case peut être utilisée et leurs différences par rapport à Snowflake Scripting.
Sélectionner à l’aide de Case¶
Transact-SQL¶
CASE simple¶
CASE recherchée¶
Résultat¶
sqlLOGINID |
statut |
|---|---|
adventure-works\ken0 |
SINGLE |
adventure-works\ erri0 |
SINGLE |
adventure-works\roberto0 |
MARIED |
adventure-works\rob0 |
SINGLE |
adventure-works\gail0 |
MARIED |
adventure-works\jossef0 |
MARIED |
adventure-works\dylan0 |
MARIED |
adventure-works\diane1 |
SINGLE |
adventure-works\gigi0 |
MARIED |
adventure-works\michael6 |
MARIED |
Exécution de scripts Snowflake¶
Notez que dans ce scénario, il n’y a aucune différence concernant l’expression Case elle-même.
Avertissement
The declaration and assignment of the res variable is to demonstrate the functional equivalence between both languages. It does not appear in the actual output.
CASE simple¶
CASE recherchée¶
Résultat¶
LOGINID |
STATUS |
|---|---|
adventure-worksken0 |
SINGLE |
adventure-works erri0 |
SINGLE |
adventure-worksoberto0 |
MARIED |
adventure-worksob0 |
SINGLE |
adventure-worksgail0 |
MARIED |
adventure-worksjossef0 |
MARIED |
adventure-worksdylan0 |
MARIED |
adventure-worksdiane1 |
SINGLE |
adventure-worksgigi0 |
MARIED |
adventure-worksmichael6 |
MARIED |
Définir avec Case¶
La base de données AdventureWorks2019 a été utilisée dans les deux langues pour obtenir les mêmes résultats.
Transact-SQL¶
Cas simple¶
Cas recherché¶
Résultat¶
résultat |
|---|
150 |
Exécution de scripts Snowflake¶
Avertissement
Snowflake Scripting does not allow setting a case expression directly to a variable. Both Transact-SQL Case expression formats translate to the following grammar in Snowflake Scripting.
SimpleCase¶
Cas recherché¶
Résultat¶
résultat |
|---|
150 |
EWIs connexes¶
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
CREATE PROCEDURE¶
Référence de traduction pour convertir des clauses Transact-SQL CREATE PROCEDURE en Snowflake
Applies to
SQL Server
Azure Synapse Analytics
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
L’instruction create procedure permet de créer des procédures stockées qui peuvent :
Accepter des paramètres d’entrée et renvoyer des valeurs multiples sous la forme de paramètres de sortie à la procédure ou au lot appelant.
Contenir des instructions de programmation qui effectuent des opérations dans la base de données, y compris l’appel d’autres procédures.
Renvoyer une valeur de statut à une procédure ou à un lot appelant pour indiquer le succès ou l’échec (et la raison de l’échec).
For more information, see the Transact-SQL CREATE PROCEDURE documentation.
Modèles d’échantillons de sources¶
Procédure stockée sans corps¶
A stored procedure without a body is an unusual scenario that is allowed in Transact-SQL. Snowflake Scripting does not allow defining procedures without a body, but the following example shows the equivalence.
Transact-SQL¶
Procédure¶
Exécution de scripts Snowflake¶
Procédure stockée de base¶
L’exemple suivant détaille une procédure stockée simple qui inclura un nouveau service de protection de la vie privée dans la base de données AdventureWorks2019.
Transact-SQL¶
Exécution de scripts Snowflake¶
Procédure Alter¶
La transformation de la procédure ALTER est équivalente à la procédure de base.
Transact-SQL¶
Exécution de scripts Snowflake¶
Utilisation de paramètres¶
Vous pouvez utiliser des paramètres pour piloter votre logique ou construire des instructions SQL dynamiques à l’intérieur de votre procédure stockée. L’exemple suivant présente une procédure stockée SetNewPrice simple qui définit le prix d’un nouveau produit sur la base des arguments envoyés par l’appelant.
Transact-SQL¶
Exécution de scripts Snowflake¶
Paramètres de sortie¶
Le mot-clé de sortie Transact-SQL indique que le paramètre est un paramètre de sortie, dont la valeur sera renvoyée à l’appelant de la procédure stockée. Par exemple, la procédure suivante renverra le nombre d’heures de vacances d’un employé spécifique.
Transact-SQL¶
Exécution de scripts Snowflake¶
Paramètres facultatifs¶
Un paramètre est considéré comme facultatif si le paramètre a une valeur par défaut spécifiée lors de sa déclaration. Il n’est pas nécessaire de fournir une valeur pour un paramètre facultatif dans un appel de procédure.
Transact-SQL¶
Exécution de scripts Snowflake¶
EXECUTE AS¶
La clause EXECUTE AS de Transact-SQL définit le contexte d’exécution de la procédure stockée, en spécifiant le compte utilisateur utilisé par le moteur de base de données pour valider les autorisations sur les objets référencés dans la procédure. Par exemple, nous pouvons modifier la procédure précédente GetVacationHours pour définir différents contextes d’exécution.
Propriétaire (par défaut dans Snowflake Scripting)
Transact-SQL¶
Exécution de scripts Snowflake¶
Appelant¶
Transact-SQL¶
Exécution de scripts Snowflake¶
Avertissement
SELF et les contextes d’exécution propres à un utilisateur (« user\name ») ne sont pas pris en charge dans Snowflake Scripting.
READONLY AND VARYING PARAMETERS¶
Snowflake ne prend pas en charge les types de paramètres READONLY et VARYING, un FDM est ajouté à la place.
Transact-SQL¶
Exécution de scripts Snowflake¶
Problèmes connus¶
Arguments facultatifs non pris en charge¶
[VARYING] S’applique uniquement aux paramètres de curseur. Spécifie le jeu de résultats pris en charge en tant que paramètre de sortie. Ce paramètre est construit dynamiquement par la procédure et son contenu peut varier. Snowflake Scripting ne prend pas en charge CURSOR comme type de données de retour valide.
[= default] Rend un paramètre facultatif par la définition d’une valeur par défaut. Snowflake Scripting ne prend pas en charge nativement les valeurs par défaut des paramètres.
[READONLY] Indique que le paramètre ne peut pas être mis à jour ou modifié dans le corps de la procédure. Actuellement non pris en charge dans Snowflake Scripting.
[WITH RECOMPILE] Force le moteur de la base de données à compiler le plan de requête de la procédure stockée à chaque exécution. Actuellement non pris en charge dans Snowflake Scripting.
[WITH ENCRYPTION] Utilisé pour chiffrer le texte d’une procédure stockée. Seuls les utilisateurs ayant accès aux tables du système ou aux fichiers de la base de données (tels que les utilisateurs sysadmin) pourront accéder au texte de la procédure après sa création. Actuellement non pris en charge dans Snowflake Scripting.
[FOR REPLICATION] Limite l’exécution de la procédure stockée à la seule période de réplication. Actuellement non pris en charge dans Snowflake Scripting.
EWIs connexes¶
SSC-EWI-0030 : L’instruction ci-dessous a des utilisations de SQL dynamique.
SSC-EWI-0058 : La fonctionnalité n’est pas prise en charge actuellement par Snowflake Scripting.
CURSOR¶
Référence de traduction pour convertir l’instruction Transact-SQL CURSOR en Exécution de scripts Snowflake
Applies to
SQL Server
Azure Synapse Analytics
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Transact-SQL statements produce a complete result set, but there are times when the results are best processed one row at a time. Opening a cursor on a result set allows processing the result set one row at a time. You can assign a cursor to a variable or parameter with a cursor data type. For more information, see the Transact-SQL Cursors documentation.
Modèles d’échantillons de sources¶
Transact-SQL¶
Notez que les paramètres suivants sont intrinsèquement pris en charge par Snowflake Scripting.
[LOCAL].
[FORWARD_ONLY].
[FAST_FORWARD] Spécifie un FORWARD_ONLY (FETCH NEXT uniquement) et READ_ONLY
[READ_ONLY] le WHERE CURRENT OF n’existe pas dans Snowflake Scripting.
Curseur¶
Résultat¶
Exécution de scripts Snowflake¶
Curseur¶
Résultat¶
Problèmes connus¶
Les paramètres suivants ne sont pas pris en charge :
DECLARE CURSOR
[ GLOBAL ] Permet de référencer le nom du curseur dans une procédure stockée ou un lot exécuté par la connexion. Snowflake Scripting ne permet d’utiliser le curseur que localement.
[ SCROLL ] Snowflake Scripting prend uniquement en charge FETCH NEXT.
[ KEYSET | DYNAMIC ] Si, après l’ouverture d’un curseur, une mise à jour de la table est effectuée, ces options peuvent afficher certaines des modifications lors de la recherche du curseur. Snowflake Scripting ne prend en charge que STATIC, en d’autres termes, après l’ouverture du curseur, les modifications apportées à la table ne sont pas détectées par le curseur.
[SCROLL_LOCKS] Spécifie que les mises à jour positionnées ou les suppressions effectuées par le curseur sont garanties de réussir, Snowflake Scripting ne peut pas le garantir.
[OPTIMISTIC] Lorsqu’une mise à jour ou une suppression est effectuée par le curseur, celui-ci utilise des comparaisons entre les valeurs des colonnes d’horodatage, ou une valeur de somme de contrôle si la table n’a pas de colonne d’horodatage, pour déterminer si la ligne a été modifiée après avoir été lue dans le curseur. Snowflake Scripting ne dispose pas d’un processus interne pour la réplication.
[TYPE_WARNING]
FETCH
[PRIOR | FIRST | LAST] Snowscripting prend uniquement en charge NEXT.
[ABSOLUTE] Snowflake Scripting ne prend en charge que NEXT mais le comportement peut être répliqué.
[RELATIVE] Snowflake Scripting mais le comportement peut être répliqué.
[ GLOBAL ] Permet de référencer le nom du curseur dans une procédure stockée ou un lot exécuté par la connexion. Snowflake Scripting ne permet d’utiliser le curseur que localement.
FETCH sans INTO n’est pas pris en charge.
Lorsque l’instruction FETCH est située à l’intérieur d’une boucle, elle est considérée comme un modèle complexe car elle peut avoir un impact sur les performances du code traduit par Snowflake. Consultez la section des problèmes connexes pour plus d’informations.
Fetch dans un échantillon de boucle¶
SQL Server¶
Snowflake¶
OPEN¶
[ GLOBAL ] Permet de référencer le nom du curseur dans une procédure stockée ou un lot exécuté par la connexion. Snowflake Scripting ne permet d’utiliser le curseur que localement.
CLOSE
[ GLOBAL ] Permet de référencer le nom du curseur dans une procédure stockée ou un lot exécuté par la connexion. Snowflake Scripting ne permet d’utiliser le curseur que localement.
DEALLOCATED Supprime une référence de curseur et il n’y a pas d’équivalent dans Snowflake Scripting.
WHERE CURRENT OF l’utilisation de cette instruction n’est pas prise en charge, par exemple :
Variables d’environnement
@@CURSOR_ROWS
@@FETCH_STATUS
EWIs connexes¶
SSC-FDM-TS0013 : Les lignes du curseur de Snowflake Scripting ne sont pas modifiables.
SSC-PRF-0003: Fetch à l’intérieur d’une boucle est considéré comme un modèle complexe, cela pourrait dégrader les performances de Snowflake.
DECLARE¶
Référence de traduction pour convertir l’instruction Transact-SQL DECLARE en Exécution de scripts Snowflake
Applies to
SQL Server
Azure Synapse Analytics
Description¶
Transact-SQL DECLARE statement allows the creation of variables that can be used in the scope of the batch or a stored procedure. For more information, see the Transact-SQL DECLARE documentation.
Modèles d’échantillons de sources¶
Déclarer des variables¶
Les variables peuvent être créées de différentes manières. Les variables peuvent avoir ou non une valeur par défaut et plusieurs variables peuvent être déclarées dans la même ligne.
Notice that Snowflake Scripting does not allow creating more than one variable per line.
Transact-SQL¶
Exécution de scripts Snowflake¶
Déclarer les variables de table¶
Transact-SQL permet de créer des variables de table qui peuvent être utilisées comme des tables ordinaires. Snowflake Scripting ne prend pas en charge cette procédure. Au lieu de cela, une table peut être créée puis supprimée à la fin de la procédure.
Transact-SQL¶
Exécution de scripts Snowflake¶
Instruction DECLARE en dehors des routines (fonctions et procédures)¶
Contrairement à Transact-SQL, Snowflake ne prend pas en charge l’exécution d’instructions isolées comme DECLARE en dehors de routines telles que des fonctions ou des procédures. Dans ce cas, l’instruction doit être encapsulée dans un bloc anonyme, comme le montrent les exemples suivants. Cette instruction est généralement utilisée avant un SET STATEMENT.
Transact-SQL¶
Exécution de scripts Snowflake¶
Si un scénario ne comporte que des instructions DECLARE, le bloc BEGIN…END doit comporter une instruction RETURN NULL pour éviter les erreurs, car ce bloc ne peut pas être vide.
Transact-SQL¶
Exécution de scripts Snowflake¶
EXECUTE¶
Référence de traduction pour convertir l’instruction Execute Transact-SQL en Snowflake
Applies to
SQL Server
Azure Synapse Analytics
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Transact-SQL EXECUTE statement allows the execution of a command string or character string within a Transact-SQL batch, a scalar-valued user-defined function, or a stored procedure. For more information, see the Transact-SQL EXECUTE documentation.
Modèles d’échantillons de sources¶
Exécution d’une chaîne de caractères¶
EXECUTE peut être utilisé pour effectuer les opérations SQL passées directement sous forme de littéraux. Dans l’exemple suivant, il est utilisé dans une procédure stockée qui insère un nouveau service de protection de la vie privée dans la base de données AdventureWorks2019.
Transact-SQL¶
Exécution de scripts Snowflake¶
Exécution de la procédure stockée¶
EXECUTE peut également être utilisée pour appeler une procédure stockée existante. L’exemple suivant appellera la procédure AddPrivacyDepartment qui a été créée ci-dessus. Il lancera ensuite une page SELECT pour vérifier que le nouveau département a bien été inclus.
Transact-SQL¶
Résultat¶
DepartmentID |
Nom |
GroupName |
ModifiedDate |
|---|---|---|---|
1 |
Engineering |
Recherche et développement |
2008-04-30 00:00:00.000 |
2 |
Conception d’outils |
Recherche et développement |
2008-04-30 00:00:00.000 |
3 |
Sales |
Ventes et marketing |
2008-04-30 00:00:00.000 |
4 |
Marketing |
Ventes et marketing |
2008-04-30 00:00:00.000 |
5 |
Achats |
Gestion des stocks |
2008-04-30 00:00:00.000 |
6 |
Recherche et développement |
Recherche et développement |
2008-04-30 00:00:00.000 |
7 |
Production |
Fabrication |
2008-04-30 00:00:00.000 |
8 |
Contrôle de la production |
Fabrication |
2008-04-30 00:00:00.000 |
9 |
Ressources humaines |
Exécution générale et administration |
2008-04-30 00:00:00.000 |
1 0 |
Finances |
Exécution générale et administration |
2008-04-30 00:00:00.000 |
1 1 |
Services d’information |
Exécution générale et administration |
2008-04-30 00:00:00.000 |
1 2 |
Contrôle des documents |
Assurance qualité |
2008-04-30 00:00:00.000 |
1 3 |
Assurance qualité |
Assurance qualité |
2008-04-30 00:00:00.000 |
1 4 |
Installations et entretien |
Exécution générale et administration |
2008-04-30 00:00:00.000 |
1 5 |
Expédition et réception |
Gestion des stocks |
2008-04-30 00:00:00.000 |
1 6 |
Exécution |
Exécution générale et administration |
2008-04-30 00:00:00.000 |
1 7 |
Confidentialité |
Exécution générale et administration |
2021-11-17 12:42:54.640 |
Exécution de scripts Snowflake¶
Résultat¶
DEPARTMENTID |
NAME |
GROUPNAME |
MODIFIEDDATE |
|---|---|---|---|
1 |
Engineering |
Recherche et développement |
2021-11-17 10:29:36.963 |
2 |
Conception d’outils |
Recherche et développement |
2021-11-17 10:29:37.463 |
3 |
Sales |
Ventes et marketing |
2021-11-17 10:29:38.192 |
4 |
Marketing |
Ventes et marketing |
2021-11-17 10:29:38.733 |
5 |
Achats |
Gestion des stocks |
2021-11-17 10:29:39.298 |
6 |
Recherche et développement |
Recherche et développement |
2021-11-17 10:31:53.770 |
7 |
Production |
Fabrication |
2021-11-17 10:31:55.082 |
8 |
Contrôle de la production |
Fabrication |
2021-11-17 10:31:56.638 |
9 |
Ressources humaines |
Exécution générale et administration |
2021-11-17 10:31:57.507 |
10 |
Finances |
Exécution générale et administration |
2021-11-17 10:31:58.473 |
11 |
Services d’information |
Exécution générale et administration |
2021-11-17 10:34:35.200 |
12 |
Contrôle des documents |
Assurance qualité |
2021-11-17 10:34:35.741 |
13 |
Assurance qualité |
Assurance qualité |
2021-11-17 10:34:36.277 |
14 |
Installations et entretien |
Exécution générale et administration |
2021-11-17 10:34:36.832 |
15 |
Expédition et réception |
Gestion des stocks |
2021-11-17 10:34:37.373 |
16 |
Exécution |
Exécution générale et administration |
2021-11-17 10:34:37.918 |
17 |
Confidentialité |
Exécution générale et administration |
2021-11-17 10:46:43.345 |
Exécution d’une variable locale et utilisation de paramètres¶
L’instruction EXECUTE est couramment utilisée lorsqu’il est nécessaire d’établir des instructions SQL dynamiques. Dans ce cas, au lieu d’exécuter une chaîne littérale, l’instruction peut être construite dynamiquement et assignée à une variable locale, qui sera ensuite exécutée. Un ensemble d’arguments peut être envoyé à la procédure stockée appelée pour construire la commande SQL dynamique.
L’exemple suivant présente une procédure stockée SetNewPrice simple, qui utilise l’instruction EXECUTE pour définir le prix d’un nouveau produit en fonction des arguments envoyés par l’appelant. Enfin, un SELECT est utilisé pour confirmer le prix du nouveau produit.
Transact-SQL¶
Résultat¶
ListPrice |
|---|
34.9900 |
Exécution de scripts Snowflake¶
Résultat¶
LISTPRICE |
|---|
34.9900 |
Problèmes connus¶
Utilisation des codes de retour¶
La syntaxe Transact-SQL EXECUTE contient l’argument facultatif @return_status, qui permet de créer une variable scalaire pour stocker le statut de retour d’une fonction définie par l’utilisateur à valeur scalaire.
Elle peut également être utilisée dans les procédures stockées, bien que le statut renvoyé soit limité à un type de données entier.
Pour représenter cette fonctionnalité, nous pourrions modifier légèrement l’exemple ci-dessus et créer une fonction définie par l’utilisateur pour calculer le prix du nouveau produit comme une moyenne des prix historiques. Au lieu de le transmettre à la procédure stockée, nous pourrions maintenant appeler la fonction CalculateAveragePrice pour obtenir le nouveau prix et le stocker dans la variable de retour pour construire le SQL dynamique.
Transact-SQL¶
Exécuter¶
Résultat¶
ListPrice |
|---|
34.0928 |
Exécution de scripts Snowflake¶
Arguments facultatifs non pris en charge¶
@return_status
;number
@module__name_v_ar
WITH RECOMPILE, WITH RESULT SETS NONE, WITH <définition du jeu de résultats>
EWIs connexes¶
SSC-EWI-0030 : L’instruction ci-dessous a des utilisations de SQL dynamique.
IF¶
Référence de traduction pour convertir des clauses Transact-SQL IF..ELSE en Exécution de scripts Snowflake
Applies to
SQL Server
Azure Synapse Analytics
Description¶
La clause IF permet l’exécution conditionnelle d’une instruction SQL ou d’un bloc d’instructions tant que l’expression booléenne est true ; dans le cas contraire, les instructions de la clause facultative ELSE seront exécutées. Transact-SQL permet également d’intégrer plusieurs clauses IF … ELSE dans le cas où plusieurs conditions sont requises, ou la clause CASE peut également être utilisée.
For more information, see the Transact-SQL IF…ELSE documentation.
Remarque : Pour définir un bloc d’instructions, utilisez les mots-clés de contrôle du flux BEGIN et END.
Modèles d’échantillons de sources¶
Transact-SQL¶
Le code suivant fait référence à un IF … ELSE dans Transact-SQL qui conditionne la variable @value pour déterminer si elle est inférieure à 5, si elle est comprise entre 5 et 10, ou si elle a une autre valeur. Puisque @value est initialisée à 7, la deuxième condition doit être vraie et le résultat doit être 200.
IF…ELSE¶
Résultat¶
résultat |
|---|
200 |
Exécution de scripts Snowflake¶
Note
Remarquez que dans Snowflake Scripting, la condition intégrée IF … ELSE est appelée ELSEIF.
En outre, la condition booléenne est encapsulée entre parenthèses et la clause se termine toujours par l’expression END IF.
En outre, dans Snowflake Scripting, il n’est pas nécessaire d’utiliser les mots-clés BEGIN et END pour définir un bloc d’instructions, sauf s’il s’agit d’une exigence.
IF…ELSE¶
Résultat¶
résultat |
|---|
200 |
Instruction IF en dehors des routines (fonctions et procédures)¶
Contrairement à Transact-SQL, Snowflake ne prend pas en charge l’exécution d’instructions isolées comme IF…ELSE en dehors des routines telles que des fonctions ou des procédures. Pour ce scénario, l’instruction doit être incluse dans un bloc anonyme, comme indiqué dans l’exemple suivant. Vous pouvez en savoir plus sur la façon de renvoyer correctement les valeurs de sortie dans la section SELECT.
Transact-SQL¶
Exécution de scripts Snowflake¶
EWIs connexes¶
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
SSC-FDM-0020 : Plusieurs jeux de résultats sont renvoyés dans des tables temporaires.
LABEL et GOTO¶
Référence de traduction pour convertir LABEL AND GOTO en Transact-SQL
Applies to
SQL Server
Description¶
Snowflake SQL ne prend pas en charge les instructions de GOTO LABEL. Actuellement, les LABELS sont commentés et un avertissement est ajouté pour toutes les occurrences.
Modèles d’échantillons de sources¶
Les exemples suivants détaillent les instructions de transaction BEGIN et COMMIT.
Transact-SQL¶
Instructions étiquetées¶
Snowflake SQL¶
Instructions étiquetées¶
Instruction LABEL et GOTO en dehors des routines (fonctions et procédures)¶
Transact-SQL¶
Exécution de scripts Snowflake¶
EWIs connexes¶
SSC-EWI-TS0045 : L’instruction étiquetée n’est pas prise en charge dans Snowflake Scripting.
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
OUTPUT PARAMETERS¶
Cet article traite de la transformation actuelle des paramètres de sortie et de la manière dont leur fonctionnalité est émulée.
Applies to
SQL Server
Azure Synapse Analytics
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
An output parameter is a parameter whose value is passed out of the stored procedure, back to the calling SQL block. Since the output parameters are not supported by Snowflake Scripting, a solution has been implemented to emulate their functionality.
Modèles d’échantillons de sources¶
Paramètre OUT unique¶
Le scénario le plus simple pour les paramètres OUT est celui où la procédure n’en a qu’un seul. Dans ce cas, nous renvoyons simplement le paramètre OUT à la fin du corps de la procédure.
La procédure EXEC doit également être traduite ; pour cela un CALL est créé, les paramètres sont passés sans aucun modificateur (« OUT » est supprimé), puis une affectation est faite pour que le paramètre soit associé à sa valeur résultante respective.
Transact-SQL¶
Exécution de scripts Snowflake¶
Paramètres OUT multiples¶
Lorsque plusieurs paramètres OUT sont trouvés, la clause RETURNS de la procédure devient VARIANT. En effet, cela permet alors d’utiliser OBJECT_CONSTRUCT pour stocker les valeurs des paramètres OUT.
En outre, une instruction RETURN est ajoutée à la fin du corps de la procédure. C’est ici qu’est créé le OBJECT_COSNTRUCT et que sont stockées toutes les valeurs de paramètres OUT. Cet objet sera ensuite utilisé par l’appelant pour affecter la valeur des paramètres au résultat correspondant.
Transact-SQL¶
Exécution de scripts Snowflake¶
Paramètres OUT et valeurs de retour¶
Transact-SQL permet aux procédures d’avoir des valeurs de retour. Lorsqu’une procédure possède à la fois une valeur de retour et un ou des paramètres OUT, une approche similaire au scénario Paramètres OUT multiples est appliquée. La valeur de retour originale est traitée comme le serait un paramètre OUT, elle est donc stockée dans OBJECT_CONSTRUCT et extraite dans la procédure appelante.
Transact-SQL¶
Exécution de scripts Snowflake¶
Requête¶
Paramètres OUT du type de données de client¶
when the output parameter is a custom type, the process is similar to a regular data type.
Transact-SQL¶
Exécution de scripts Snowflake¶
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
SSC-EWI-TS0015 : Le type de données n’est pas pris en charge dans Snowflake.
SET¶
Référence de traduction pour convertir l’instruction Transact-SQL SET en Snowflake
Applies to
SQL Server
Azure Synapse Analytics
Description¶
Sets the specified local variable, previously created by using the DECLARE @local_variable statement, to the specified value. For more information, see the Transact-SQL SET documentation.
Il y a quatre cas SET qui sont les suivants :
Modèles d’échantillons de sources¶
Transact-SQL¶
Cas 1¶
Cas 2¶
Résultat 1¶
Résultat |
|---|
0 |
Exécution de scripts Snowflake¶
Cas 1¶
Cas 2¶
Résultat 1¶
Résultat |
|---|
0 |
Instruction SET en dehors des routines (fonctions et procédures)¶
Contrairement à Transact-SQL, Snowflake ne prend pas en charge l’exécution d’instructions isolées comme SET en dehors de routines telles que des fonctions ou des procédures. Dans ce cas, l’instruction doit être encapsulée dans un bloc anonyme, comme le montrent les exemples suivants. Cette instruction est généralement utilisée après un DECLARE STATEMENT.
Transact-SQL¶
Exécution de scripts Snowflake¶
Si un scénario ne comporte que des instructions SET, le bloc DECLARE n’est pas nécessaire. Ce scénario produira probablement des erreurs d’environnement d’exécution si l’on tente d’attacher une valeur à une variable qui n’est pas déclarée.
Transact-SQL¶
Exécution de scripts Snowflake¶
Problèmes connus¶
1. SET of a local variable with property name¶
Ce type de set n’est actuellement pas pris en charge par Snowflake Scripting.
2. SET of a local variable with mutator method¶
Ce type de set n’est actuellement pas pris en charge par Snowflake Scripting.
EWIs connexes¶
SSC-EWI-TS0037 : Les curseurs de Snowflake Scripting ne sont pas défilables.
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
SSC-FDM-TS0013 : Les lignes du curseur de Snowflake Scripting ne sont pas modifiables.
TRY CATCH¶
Référence de traduction pour l’instruction TRY CATCH dans Transact-SQL.
Applies to
SQL Server
Azure Synapse Analytics
Description¶
Met en œuvre la gestion des erreurs pour Transact SQL. Un groupe d’instructions Transact-SQL peut être inclus dans un bloc TRY. Si une erreur se produit dans le bloc TRY, le contrôle est généralement transféré à un autre groupe d’instructions inclus dans un bloc CATCH.
Modèles d’échantillons de sources¶
L’exemple suivant détaille la transformation pour TRY CATCH à l’intérieur des procédures.
Transact-SQL¶
Sortie¶
Snowflake SQL¶
Sortie¶
Routines extérieures Try Catch (fonctions et procédures)¶
Transact-SQL¶
Exécution de scripts Snowflake¶
EWIs connexes¶
SSC-FDM-0020 : Plusieurs jeux de résultats sont renvoyés dans des tables temporaires.
WHILE¶
Référence de traduction pour convertir l’instruction Transact-SQL While en Exécution de scripts Snowflake
Applies to
SQL Server
Azure Synapse Analytics
Description¶
L’instruction While permet à une instruction SQL ou à un bloc d’instructions d’être exécuté de manière répétée tant que la condition spécifiée est true. L’exécution des instructions dans la boucle WHILE peut être contrôlée depuis l’intérieur de la boucle à l’aide des mots-clés BREAK et CONTINUE.
For more information, see the Transact-SQL WHILE documentation.
Remarque : Pour définir un bloc d’instructions, utilisez les mots-clés de contrôle du flux BEGIN et END.
Modèles d’échantillons de sources¶
Code source du modèle de base¶
Transact-SQL¶
Le code suivant fait référence à une boucle While dans Transact-SQL qui itère la variable @Iteration et contrôle le flux de la boucle pour qu’elle se termine lorsque la valeur de @Iteration est égale à 10.
Note
Les instructions qui suivent le mot-clé CONTINUE ne seront pas exécutées.
While¶
Résultat¶
itération |
|---|
10 |
Exécution de scripts Snowflake¶
Note
Tout comme Transact-SQL, dans Snowflake Scripting les instructions qui suivent le mot-clé CONTINUE ne seront pas exécutées.
Notez que dans Snowflake Scripting, il n’est pas nécessaire d’utiliser les mots-clés BEGIN et END pour définir un bloc d’instructions, sauf s’il s’agit d’une exigence.
While¶
Mot-clé Loop¶
Snowflake Scripting permet d’utiliser le mot-clé LOOP au lieu de DO et l’expression END LOOP au lieu de END WHILE.
Résultat¶
Itération |
|---|
10 |
While avec Modèle de source de corps vide¶
Transact-SQL¶
Note
Notez que cet exemple a été rédigé alors que l’instruction IF ELSE n’était pas prise en charge. Les différences dans les résultats devraient disparaître lorsque la prise en charge de l’instruction sera mise en œuvre.
Résultat¶
résultat |
|---|
125 |
Exécution de scripts Snowflake¶
Cette instruction ne peut pas avoir un corps vide dans Snowflake Scripting, pour résoudre ce cas, une instruction par défaut BREAK est ajoutée lorsqu’un corps vide est détecté.
Résultat¶
résultat |
|---|
1 |
Instruction WHILE en dehors des routines (fonctions et procédures)¶
Contrairement à Transact-SQL, Snowflake ne prend pas en charge l’exécution d’instructions isolées comme WHILE en dehors de routines telles que des fonctions ou des procédures. Pour ce scénario, l’instruction doit être encapsulée dans un bloc anonyme, comme le montre l’exemple suivant.
Transact-SQL¶
Exécution de scripts Snowflake¶
EWIs connexes¶
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.