SnowConvert AI - Oracle - PL/SQL vers Snowflake Scripting¶
ASSIGNMENT STATEMENT¶
Description¶
L’instruction d’affectation de définit la valeur d’un élément de données sur une valeur valide.\ (Référence linguistique Oracle PL/SQL Instruction ASSIGNMENT).
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Syntaxe d’affectation Oracle¶
Syntaxe d’affectation de Snowflake Scripting¶
Note
Le mot-clé LET n’est pas nécessaire pour les instructions d’affectation lorsque la variable a été déclarée auparavant. Consultez la documentation sur l’affectation Snowflake pour plus d’informations.
Modèles d’échantillons de sources¶
1. Scalar Variables¶
Oracle¶
Résultat¶
COL1 |
COL2 |
COL3 |
COL4 |
|---|---|---|---|
1 |
4.2 |
Bonjour le monde |
1 |
Exécution de scripts Snowflake¶
Résultat¶
COL1 |
COL2 |
COL3 |
COL4 |
|---|---|---|---|
1.000000000000000000 |
4.000000000000000000 |
Bonjour le monde |
1 |
Avertissement
La transformation de certains types de données doit être mise à jour, ce qui peut entraîner des résultats différents. Par exemple, NUMBER à NUMBER arrondit la valeur et le point décimal est perdu. Cette question fait déjà l’objet d’un document de travail.
2. Out Parameter Assignment¶
Pour obtenir plus d’informations sur la conversion des paramètres de sortie, veuillez consulter l’article suivant Paramètres de sortie.
3. Not Supported Assignments¶
Oracle¶
Exécution de scripts Snowflake¶
Problèmes connus¶
1. Several Unsupported Assignment Statements¶
Actuellement, la transformation des variables de type curseur, collection, enregistrement et définies par l’utilisateur n’est pas prise en charge par Snow Scripting. Par conséquent, les instructions d’affectation utilisant ces variables sont commentées et marquées comme n’étant pas prises en charge. Le remplacement de ces variables par des types de données semi-structurées Snowflake pourrait constituer une solution de contournement dans certains scénarios.
CALL¶
Description¶
Il existe deux types d’instructions d’appel dans Oracle :
1-Instruction CALL :¶
Utilisez l’instruction
CALLpour exécuter une routine (une procédure ou une fonction autonome, ou une procédure ou une fonction définie dans un type ou un paquet) à partir de SQL. (Référence linguistique Oracle SQL CALL)
2-Spécification d’appel .¶
Une spécification d’appel déclare une méthode Java ou un sous-programme en langue C de sorte qu’il puisse être invoqué à partir de PL/SQL. (Référence linguistique Oracle SQL Spécification d’appel)
The CALL Specification is not supported in Snowflake Scripting since this is part of the development libraries for C and JAVA, not a SQL statement, therefore this statement is not transformed.
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
Pas d’EWIs connexes.
CASE¶
Référence de traduction pour les instructions CASE
Description¶
L’instruction
CASEchoisit une séquence de conditions et exécute l’instruction correspondante. Pour plus d’informations sur Oracle CASE, cliquez ici.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Cas simple¶
Syntaxe CASE Oracle¶
Syntaxe CASE Snowflake Scripting¶
Cas recherché¶
Syntaxe CASE Oracle¶
Syntaxe CASE Snowflake Scripting¶
Modèles d’échantillons de sources¶
Sample auxiliary table¶
Oracle¶
Snowflake¶
Cas simple¶
Oracle¶
Résultat¶
COL |
|---|
Mauvaise |
Pas de telle classification |
Excellent |
Exécution de scripts Snowflake¶
Résultat¶
COL |
|---|
Mauvaise |
Pas de telle classification |
Excellent |
Cas recherché¶
Oracle¶
Résultat¶
COL |
|---|
Mauvaise |
Pas de telle classification |
Excellent |
Exécution de scripts Snowflake¶
Résultat¶
COL |
|---|
Mauvaise |
Pas de telle classification |
Excellent |
Problèmes connus¶
1. Labels are not supported in Snowflake Scripting CASE syntax¶
Les étiquettes sont commentées ou supprimées en fonction de leur position.
EWIs connexes¶
SSC-EWI-0094: La déclaration des étiquettes n’est pas prise en charge.
SSC-FDM-0007: Élément avec des dépendances manquantes.
COMPOUND STATEMENTS¶
Cette section est une spécification de traduction pour les instructions composées.
Avertissement
Les informations de cette section, en cours de modification, sont sujettes à modification.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description générale¶
L’unité de base d’un programme source PL/SQL est le bloc, qui regroupe les déclarations et instructions connexes.
Un bloc PL/SQL est défini par les mots-clés DECLARE, BEGIN, EXCEPTION et END. Ces mots-clés divisent le bloc en une partie déclarative, une partie exécutable et une partie de traitement des exceptions. Seule la partie exécutable est exigée. (Blocs anonymes PL/SQL)
Le bloc BEGIN...END dans Oracle peut présenter les caractéristiques suivantes :
Être imbriqué.
Contenir l’instruction DECLARE pour les variables.
Grouper plusieurs instructions SQL ou PL/SQL.
Syntaxe Oracle¶
Syntaxe Snowflake¶
Note
Dans Snowflake, un bloc BEGIN/END peut être la construction de premier niveau à l’intérieur d’un bloc anonyme (documentation de Snowflake).
Modèles d’échantillons de sources¶
1. IF-ELSE block¶
Consultez la documentation suivante sur les instructions IF pour en savoir plus : traduction des instructions SnowConvert AI IF et documentation de l’instruction Snowflake IF
Oracle¶
Résultat¶
Snowflake¶
Avertissement
Lors de l’appel d’une procédure ou d’une fonction définie par l’utilisateur (UDF), il est nécessaire de générer du code pour prendre en charge l’équivalence avec la variable call_results. Dans ce cas, sert à imprimer l’information.
Examinez la fonction définie par l’utilisateur (UDF) utilisée ici.
Résultat¶
2. CASE statement¶
Pour plus d’informations, consultez la documentation suivante : documentation de l’instruction SnowConvert AI CASE et Documentation CASE Snowflake
Oracle¶
Résultat¶
Snowflake¶
Avertissement
Lors de l’appel d’une procédure ou d’une fonction définie par l’utilisateur (UDF), il est nécessaire de générer du code pour prendre en charge l’équivalence avec la variable call_results. Dans ce cas, sert à imprimer l’information.
Examinez la fonction définie par l’utilisateur (UDF) utilisée ici.
Résultat¶
3. LOOP statements¶
Pour plus d’informations, consultez la documentation suivante : SnowConvert AI FOR LOOP et la [documentation LOOP] Snowflake (https://docs.snowflake.com/en/sql-reference/snowflake-scripting/loop) et la documentation FOR.
Oracle¶
Résultat¶
Snowflake¶
Premier onglet¶
Résultat¶
4. Procedure call and OUTPUT parameters¶
Le bloc anonyme dans Oracle peut avoir des appels à des procédures. En outre, la documentation suivante peut être utile : documentation de la procédureSnowConvert AI.
L’exemple suivant utilise les paramètres OUT. Vous trouverez les informations sur la transformation actuelle ici : Paramètres SnowConvert AI OUTPUT
Oracle¶
Résultat¶
Snowflake¶
Résultat¶
5. Alter session¶
Pour plus d’informations, consultez la documentation suivante : documentation Modifier la session.
Remarquez que dans Oracle, le bloc BEGIN...END doit utiliser l’instruction EXECUTE IMMEDIATE pour exécuter les instructions alter session.
Oracle¶
Résultat¶
Snowflake¶
Résultat¶
6. Cursors¶
L’exemple suivant montre l’utilisation d’un curseur à l’intérieur d’un bloc BEGIN...END. Consultez la documentation suivante pour en savoir plus : documentation sur les curseurs.
Oracle¶
Résultat¶
Snowflake¶
Avertissement
Lors de l’appel d’une procédure ou d’une fonction définie par l’utilisateur (UDF), il est nécessaire de générer du code pour prendre en charge l’équivalence avec la variable call_results. Dans ce cas, sert à imprimer l’information.
Examinez la fonction définie par l’utilisateur (UDF) utilisée ici.
Résultat¶
7. Select statements¶
Pour plus d’informations, consultez la documentation suivante : documentation Sélection.
Oracle¶
Résultat¶
Snowflake¶
Avertissement
Lors de l’appel d’une procédure ou d’une fonction définie par l’utilisateur (UDF), il est nécessaire de générer du code pour prendre en charge l’équivalence avec la variable call_results. Dans ce cas, sert à imprimer l’information.
Examinez la fonction définie par l’utilisateur (UDF) utilisée ici.
Résultat¶
8. Join Statements¶
Pour plus d’informations, consultez la documentation suivante : documentation Jointures.
Oracle¶
Résultat¶
Snowflake¶
Avertissement
Lors de l’appel d’une procédure ou d’une fonction définie par l’utilisateur (UDF), il est nécessaire de générer du code pour prendre en charge l’équivalence avec la variable call_results. Dans ce cas, sert à imprimer l’information.
Examinez la fonction définie par l’utilisateur (UDF) utilisée ici.
9. Exception handling¶
Oracle¶
Résultat¶
Snowflake¶
Avertissement
L’exception ZERO_DIVIDE dans Snowflake n’est pas prise en charge.
Résultat¶
Problèmes connus¶
Instructions GOTO non prises en charge dans Oracle.
Les exceptions qui utilisent les instructions GOTO peuvent également être affectées.
La fonctionnalité du curseur peut être adaptée dans le cadre des restrictions actuelles sur les traductions.
EWIs connexes¶
SSC-EWI-0027 : L’instruction suivante utilise une variable/un littéral avec une requête non valide et ne sera pas exécutée.
SSC-EWI-OR0036: Problèmes de résolution des types, l’opération arithmétique peut ne pas se comporter correctement entre la chaîne et la date.
SSC-FDM-OR0035: DBMS_OUTPUT.PUTLINE consultez l’implémentation UDF.
SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake.
SSC-PRF-0004: Cette instruction a des utilisations de curseur For Loop.
SSC-EWI-0030: L’instruction ci-dessous a des utilisations de Dynamic SQL
CONTINUE¶
Référence de traduction pour convertir l’instruction Oracle CONTINUE en instruction Snowflake Scripting
Description¶
L’instruction
CONTINUEquitte l’itération actuelle d’une boucle, conditionnellement ou inconditionnellement, et transfère le contrôle à l’itération suivante de la boucle actuelle ou d’une boucle étiquetée englobante.\ (Référence linguistique Oracle PL/SQL Instruction CONTINUE).
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Syntaxe CONTINUE Oracle¶
Syntaxe CONTINUE Snowflake Scripting¶
Modèles d’échantillons de sources¶
1. Simple Continue¶
Le code ignore l’instruction INSERT en utilisant CONTINUE.
Remarque
Ce cas est équivalent sur le plan fonctionnel.
Oracle¶
Résultat¶
ITERATOR |
|---|
Exécution de scripts Snowflake¶
Résultat¶
ITERATOR |
|---|
2. Continue with condition¶
Le code ignore l’insertion des nombres pairs en utilisant CONTINUE.
Note
Ce cas n’est pas équivalent sur le plan fonctionnel, mais vous pouvez transformer la condition en une instruction IF.
Oracle¶
Résultat¶
ITERATOR |
|---|
1 |
3 |
5 |
7 |
9 |
11 |
13 |
15 |
17 |
19 |
21 |
Exécution de scripts Snowflake¶
Résultat¶
ITERATOR |
|---|
1 |
3 |
5 |
7 |
9 |
11 |
13 |
15 |
17 |
19 |
21 |
3. Continue with label and condition¶
Le code ignore la ligne 19 et la boucle intérieure n’est exécutée qu’une seule fois parce que CONTINUE passe toujours à la boucle extérieure à l’aide de l’étiquette.
Remarque
Ce cas est équivalent sur le plan fonctionnel à l’application du même processus que l’échantillon précédent.
Note
Notez que les étiquettes seront commentées.
Oracle¶
Résultat¶
ITERATOR |
|---|
I1 |
K1 |
K2 |
K3 |
K4 |
K5 |
I2 |
I3 |
I4 |
I5 |
I6 |
I7 |
I8 |
I9 |
I10 |
I11 |
Exécution de scripts Snowflake¶
Résultat¶
ITERATOR |
|---|
I1 |
K1 |
K2 |
K3 |
K4 |
K5 |
I2 |
I3 |
I4 |
I5 |
I6 |
I7 |
I8 |
I9 |
I10 |
I11 |
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-EWI-0094: La déclaration des étiquettes n’est pas prise en charge.
DECLARE¶
Référence de traduction pour convertir l’instruction Oracle DECLARE en instruction Snowflake Scripting
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
L’instruction Oracle DECLARE est une partie facultative de l’instruction de bloc PL/SQL. Elle permet la création de variables, de constantes, de déclarations et de définitions de procédures, de déclarations et de définitions de fonctions, d’exceptions, de curseurs, de types et de bien d’autres instructions. Pour plus d’informations sur Oracle DECLARE, cliquez ici.
Syntaxe DECLARE Oracle¶
Syntaxe DECLARE Snowflake Scripting¶
Modèles d’échantillons de sources¶
Déclaration de variables¶
Syntaxe de déclaration des variables Oracle¶
Syntaxe de déclaration des variables Snowflake Scripting¶
Oracle¶
Exécution de scripts Snowflake¶
Déclaration de constantes¶
Avertissement
Les constantes ne sont pas prises en charge dans Snowflake Scripting, mais elles sont transformées en variables pour simuler le comportement.
Syntaxe de déclaration constante Oracle¶
Syntaxe de déclaration des variables Snowflake Scripting¶
Oracle¶
Exécution de scripts Snowflake¶
Déclaration de curseurs¶
Syntaxe de déclaration de curseur Oracle¶
Syntaxe de déclaration de curseur dans Snowflake Scripting¶
Danger
La _ déclaration de curseur _ Oracle n’est pas une exigence et peut donc être commentée dans le code de sortie. La _ définition de curseur _ sera utilisée à la place de et elle sera convertie en _ déclaration de curseur _ de Snowflake Scripting. Veuillez consulter la section CURSOR pour obtenir plus d’informations sur la définition du curseur.
Déclaration d’exceptions¶
La déclaration d’exceptions peut parfois être suivie de l’initialisation de l’exception, la transformation actuelle prend les deux et les fusionne dans la déclaration d’exception de Snowflake Scripting. Le PRAGMA EXCEPTION_INIT d’origine sera commenté.
Syntaxe de déclaration des exceptions Oracle¶
Syntaxe de déclaration des exceptions dans Snowflake Scripting¶
Oracle¶
Exécution de scripts Snowflake¶
Cas non pris en charge¶
Les instructions de déclaration Oracle suivantes ne sont pas prises en charge par le bloc de déclaration Snowflake Scripting :
Déclaration des variables de curseur.
Déclaration des variables de collection.
Enregistrement de la déclaration des variables.
Définition du type (toutes ses variantes).
Déclaration et définition des fonctions.
Déclaration et définition des procédures.
Problèmes connus¶
1. The variable declarations with NOT NULL constraints are not supported by Snow Scripting.¶
La création de variables avec la contrainte NOT NULL provoque une erreur dans Snow Scripting.
2. The cursor declaration has no equivalent to Snowflake Scripting.¶
La déclaration de curseur Oracle est inutile et peut donc être commentée dans le code de sortie. La définition de curseur sera utilisée à la place et sera convertie en déclaration de curseur Snowflake Scripting.
3. The exception code exceeds Snowflake Scripting limits.¶
Le code d’exception Oracle est supprimé lorsqu’il dépasse les limites du code Snowflake Scripting. Le code d’exception doit être un entier compris entre -20000 et -20999.
3. The not supported cases.¶
Certaines instructions de déclaration Oracle ne sont pas prises en charge par le bloc de déclaration de Snowflake Scripting. Elles peuvent donc faire l’objet d’un commentaire et d’un avertissement.
EWIs connexes¶
SSC-EWI-OR0051: PRAGMA EXCEPTION_INIT n’est pas pris en charge.
SSC-EWI-OR0099: Le code d’exception dépasse la limite de Snowflake Scripting.
SSC-FDM-0016: Les constantes ne sont pas prises en charge par Snowflake Scripting. Elles sont transformées en variable.
SSC-FDM-OR0025: La contrainte non nulle n’est pas prise en charge dans les procédures Snowflake.
DEFAULT PARAMETERS¶
Cet article traite de la transformation actuelle des paramètres par défaut et de la manière dont leur fonctionnalité est émulée.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Un paramètre par défaut est un paramètre qui a une valeur si un argument n’est pas transmis dans la procédure ou l’appel de fonction. Comme Snowflake ne prend pas en charge les paramètres par défaut, SnowConvert AI insère la valeur par défaut dans la procédure ou l’appel de fonction.
Dans la déclaration, la clause DEFAULT VALUE du paramètre est supprimée. Les deux syntaxes, le symbole := et la clause DEFAULT, sont prises en charge.
Modèles d’échantillons de sources¶
Sample auxiliaryy code¶
Oracle¶
Snowflake¶
Déclaration des paramètres par défaut¶
Oracle¶
Exécution de scripts Snowflake¶
Appel de procédures avec des paramètres par défaut¶
Oracle¶
Exécution de scripts Snowflake¶
Afin de vérifier que la fonctionnalité est correctement émulée, la requête suivante va exécuter la procédure et un SELECT à partir de la table mentionnée précédemment.
Oracle¶
Résultat¶
COL1 |
COL2 |
|---|---|
10 |
15 |
10 |
1 |
10 |
15 |
10 |
2 |
1 |
2 |
Exécution de scripts Snowflake¶
Résultat¶
COL1 |
COL2 |
|---|---|
10 |
15 |
10 |
1 |
10 |
15 |
10 |
2 |
1 |
2 |
Appel de procédures avec des arguments nommés et des paramètres par défaut¶
Oracle¶
Exécution de scripts Snowflake¶
Afin de vérifier que la fonctionnalité est correctement émulée, la requête suivante va exécuter la procédure et un SELECT à partir de la table mentionnée précédemment.
Oracle¶
Résultat¶
COL1 |
COL2 |
COL3 |
|---|---|---|
10 |
20 |
30 |
10 |
20 |
30 |
20 |
30 |
10 |
100 |
30 |
10 |
100 |
10 |
30 |
100 |
10 |
1000 |
Exécution de scripts Snowflake¶
Résultat¶
COL1 |
COL2 |
COL3 |
|---|---|---|
10 |
20 |
30 |
10 |
20 |
30 |
20 |
30 |
10 |
100 |
30 |
10 |
100 |
10 |
30 |
100 |
10 |
1000 |
Problèmes connus¶
1. Aucun problème n’a été trouvé
EWIs connexes¶
Pas d’EWIs connexes.
EXECUTE IMMEDIATE¶
Référence de traduction pour convertir Oracle EXECUTE IMMEDIATE en instruction Snowflake Scripting
Description¶
L’instruction
EXECUTEIMMEDIATEconstruit et exécute une instruction dynamique SQL en une seule opération.La version dynamique native de SQL utilise l’instruction
EXECUTEIMMEDIATEpour traiter la plupart des instructions dynamiques SQL. (Référence linguistique Oracle PL/SQL Instruction EXECUTE IMMEDIATE)
Syntaxe EXECUTE IMMEDIATE Oracle¶
Snowflake Scripting prend en charge cette instruction, avec toutefois quelques différences fonctionnelles. Pour plus d’informations sur l’homologue de Snowflake, consultez la documentation sur Snowflake EXECUTE IMMEDIATE.
Syntaxe EXECUTE IMMEDIATE Snowflake Scripting¶
Modèles d’échantillons de sources¶
Les échantillons suivants créent une table et tentent de la supprimer à l’aide de la fonction Execute Immediate.
Utilisation d’une chaîne codée en dur¶
Oracle¶
Exécution de scripts Snowflake¶
Stockage de la chaîne dans une variable¶
Oracle¶
Exécution de scripts Snowflake¶
Concaténation des paramètres dans une instruction dynamique¶
Oracle¶
Exécution de scripts Snowflake¶
Transformation de clause USING¶
Oracle¶
Résultats¶
COL1 |
|---|
1 |
Exécution de scripts Snowflake¶
Note
Veuillez noter que les parenthèses sont exigées pour les paramètres de la clause USING dans Snowflake Scripting.
Résultats¶
COL1 |
|---|
1 |
Problèmes connus¶
1. Immediate Execution results cannot be stored in variables.¶
SnowScripting ne prend pas en charge les clauses INTO et BULK COLLECT INTO. Pour cette raison, les résultats devront être transmis par d’autres moyens.
2. Numeric Placeholders¶
Les noms numériques des espaces réservés ne sont actuellement pas reconnus par SnowConvert AI, mais il existe un document de travail pour résoudre ce problème.
3. Argument Expressions are not supported by Snowflake Scripting¶
Dans Oracle, il est possible d’utiliser des expressions comme arguments pour la clause d’utilisation ; cependant, ce cas n’est pas pris en charge par Snowflake Scripting, et elles sont commentées.
4. Dynamic SQL Execution queries may be marked incorrectly as non-runnable.¶
Dans certains cas, une instruction d’exécution peut faire l’objet d’un commentaire, que son exécution soit sûre ou non, veuillez en tenir compte :
Oracle¶
Exécution de scripts Snowflake¶
Note
Veuillez noter que les parenthèses sont exigées pour les paramètres de la clause USING dans Snowflake Scripting.
EWIs connexes¶
SSC-EWI-0027: Variable avec requête non valide.
SSC-EWI-0030: L’instruction ci-dessous a des utilisations de Dynamic SQL.
EXIT¶
Référence de traduction pour convertir l’instruction Oracle EXIT en instruction Snowflake Scripting
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
L’instruction
EXITquitte l’itération actuelle d’une boucle, conditionnellement ou inconditionnellement, et transfère le contrôle à la fin de la boucle actuelle ou à une boucle étiquetée englobante.\ (Référence linguistique Oracle PL/SQL Instruction EXIT).
Syntaxe EXIT Oracle¶
Syntaxe EXIT Snowflake Scripting¶
Modèles d’échantillons de sources¶
Note
Notez que vous pouvez remplacer EXITpar BREAKet que tout fonctionnera de la même manière.
1. Simple Exit¶
Le code ignore l’instruction INSERT en utilisant EXIT.
Remarque
Ce cas est équivalent sur le plan fonctionnel.
Oracle¶
Résultat¶
ITERATOR |
|---|
Exécution de scripts Snowflake¶
Résultat¶
ITERATOR |
|---|
2. Exit with condition¶
Le code quitte la boucle lorsque l’itérateur est supérieur à 5.
Remarque
Ce cas est fonctionnellement équivalent en transformant la condition en une instruction IF.
Oracle¶
Résultat¶
ITERATOR |
|---|
1 |
2 |
3 |
4 |
5 |
6 |
Exécution de scripts Snowflake¶
Résultat¶
ITERATOR |
|---|
1 |
2 |
3 |
4 |
5 |
6 |
3. Exit with label and condition¶
Le code casse les deux boucles en utilisant l’instruction EXIT qui pointe vers la boucle extérieure.
Remarque
Ce cas est équivalent sur le plan fonctionnel à l’application du même processus que l’échantillon précédent.
Note
Notez que les étiquettes seront commentées.
Oracle¶
Résultat¶
ITERATOR |
|---|
I1 |
K1 |
K2 |
K3 |
K4 |
K5 |
Exécution de scripts Snowflake¶
Résultat¶
ITERATOR |
|---|
I1 |
K1 |
K2 |
K3 |
K4 |
K5 |
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-EWI-0094: La déclaration des étiquettes n’est pas prise en charge.
EXPRESSIONS¶
Référence de traduction des expressions Oracle à Snow Scripting
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
La table suivante résume la manière de transformer les différents types d’expression Oracle en Snowflake Scripting.
Syntaxe |
Statut de conversion |
Remarques |
|---|---|---|
Partiel |
||
Partiel |
||
Partiel |
||
Partiel |
||
Complet |
N/A |
|
Complet |
N/A |
|
Non traduit |
Snowflake n’a pas d’équivalent natif pour les collections Oracle. Voir Collections et enregistrements. |
|
Non traduit |
Snowflake n’a pas d’équivalent natif pour les types d’enregistrement Oracle. Voir Collections et enregistrements. |
Scénarios communs partiellement pris en charge¶
Constantes Oracle¶
Oracle¶
Résultat¶
COL |
|---|
CONSTANT TEXT |
Snowflake¶
Résultat¶
COL |
|---|
CONSTANT TEXT |
Expressions numériques non prises en charge¶
Oracle¶
Résultat¶
COL |
|---|
4 |
104 |
11 |
3 |
Expressions booléennes non prises en charge¶
Oracle¶
EWIs connexes.¶
SSC-FDM-0016: Les constantes ne sont pas prises en charge par Snowflake Scripting. Elles ont été transformées en variables.
FOR LOOP¶
Description¶
À chaque itération de l’instruction
FORLOOP, ses instructions sont exécutées, son index est incrémenté ou décrémenté et le contrôle revient au début de la boucle. (Référence linguistique PL/SQL Instructions FOR LOOP)
Syntaxe Oracle¶
Syntaxe Snowflake Scripting¶
Snowflake Scripting prend en charge FOR LOOP qui boucle un nombre de fois spécifié. Les limites supérieure et inférieure doivent être INTEGER. Pour plus d’informations, consultez la documentation Snowflake Scripting.
Le comportement d’Oracle FOR LOOP peut également être modifié à l’aide des instructions :
Modèles d’échantillons de sources¶
1. FOR LOOP¶
Remarque
Ce cas est équivalent sur le plan fonctionnel.
Exemple FOR LOOP Oracle¶
Exemple FOR LOOP Snowflake Scripting¶
2. FOR LOOP with additional clauses¶
Exemple FOR LOOP Oracle¶
Exemple FOR LOOP Snowflake Scripting¶
3. FOR LOOP with multiple conditions¶
Exemple FOR LOOP Oracle¶
Exemple FOR LOOP Snowflake Scripting¶
4. FOR LOOP with unsupported format¶
Exemple FOR LOOP Oracle¶
Exemple FOR LOOP Snowflake Scripting¶
Avertissement
La transformation des types personnalisés n’est actuellement pas prise en charge par Snowflake Scripting.
Problèmes connus¶
1. For With Multiple Conditions¶
Oracle autorise plusieurs conditions sur un même FOR LOOP, mais Snowflake Scripting n’autorise qu’une seule condition par FOR LOOP. Seule la première condition est migrée et les autres sont ignorées lors de la transformation. Voir SSC-FDM-OR0022.
Oracle¶
Exemple FOR LOOP Snowflake Scripting¶
2. Variable de compteur mutable ou non mutable
Oracle permet de modifier la valeur de la variable FOR LOOP à l’intérieur de la boucle. La documentation actuelle inclut cette fonctionnalité, mais Snowflake recommande de l’éviter. La modification de la valeur de cette variable peut ne pas se dérouler correctement dans Snowflake Scripting.
3. Nombre entier ou nombre flottant pour la limite supérieure ou inférieure
Snowflake Scripting autorise uniquement un INTEGER ou une expression qui correspond à un INTEGER en tant que limite pour la condition FOR LOOP. Les nombres flottants seront arrondis à la valeur supérieure ou inférieure et modifieront la limite d’origine.
4. Clauses non prises en charge par Oracle
Oracle autorise les clauses supplémentaires dans la condition FOR LOOP. Comme la clause BY pour un incrément graduel dans la condition. Et les clauses WHILE et WHEN pour les expressions booléennes. Ces clauses supplémentaires ne sont pas prises en charge dans Snowflake Scripting et sont ignorées lors de la transformation. Voir SSC-EWI-OR0101.
Oracle¶
Exécution de scripts Snowflake¶
5. Formats non pris en charge
Oracle autorise différents types de conditions pour une clause FOR LOOP. Il prend en charge les expressions booléennes, les collections, les enregistrements… Cependant, Snowflake Scripting ne prend en charge que FOR LOOP avec des entiers définis comme limites. Tous les autres formats sont marqués comme non pris en charge et nécessitent des opérations manuelles supplémentaires pour être transformés. Voir SSC-EWI-OR0103.
EWIs connexes¶
SSC-EWI-0058: La fonctionnalité n’est pas prise en charge actuellement par Snowflake Scripting.
SSC-EWI-0062: L’utilisation du type personnalisé a changé en variante.
SSC-EWI-OR0100: La clause For Loop avec plusieurs conditions n’est actuellement pas prise en charge par Snowflake Scripting. Seule la première condition est utilisée.
SSC-EWI-OR0101: La clause For Loop spécifique n’est actuellement pas prise en charge par Snowflake Scripting.
SSC-EWI-OR0103: Le format For Loop n’est actuellement pas pris en charge par Snowflake Scripting.
FORALL¶
Description¶
L’instruction
FORALLexécute une instruction DML plusieurs fois, avec des valeurs différentes dans les clausesVALUESetWHERE. (Référence linguistique Oracle PL/SQL Instruction FORALL).
Syntaxe Oracle¶
Avertissement
Snowflake Scripting n’a pas d’équivalence directe avec l’instruction FORALL, mais peut être émulé avec différentes solutions de contournement pour obtenir une équivalence fonctionnelle.
Modèles d’échantillons de sources¶
Données de configuration¶
Oracle¶
Tables 1¶
Tables 2¶
Snowflake¶
Tables 1¶
Tables 2¶
1. FORALL With Collection of Records¶
Oracle¶
Remarque
Les trois cas ci-dessous ont la même transformation en Snowflake Scripting et sont fonctionnellement équivalents.
Source¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|
Snowflake¶
FORALL avec collection d’enregistrements¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
Note
Les EWIs SSC-PRF-0001 et SSC-PRF-0003 sont ajoutées à chaque occurrence de FETCH BULK COLLECT dans l’instruction FORALL.
2. FORALL With INSERT INTO¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
3. FORALL With Multiple Fetched Collections¶
Oracle¶
Avec INSERT INTO¶
Avec UPDATE¶
Résultats INSERT INTO¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
1 |
2 |
Résultats UPDATE¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2. |
Snowflake¶
Avec INSERT INTO¶
Avec UPDATE¶
Résultats INSERT INTO¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
Résultats UPDATE¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
4. FORALL With Record of Collections¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL Scripting¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
5. FORALL With Dynamic SQL¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
6. FORALL With Literal SQL¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
7. FORALL With Parametrized Cursors¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
8. FORALL Without LOOPS¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
9. FORALL With UPDATE Statements¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
54321 |
2 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
54321 |
2 |
10. FORALL With DELETE Statements¶
Oracle¶
Exemple FORALL¶
Résultats¶
Snowflake¶
Équivalent FORALL¶
Résultats¶
11. FORALL With PACKAGE References¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
10 |
10 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
10.000000000000000000 |
10.000000000000000000 |
Avertissement
La transformation ci-dessus ne fonctionne que si la variable définie dans le paquet est un enregistrement de collections.
12. FORALL With MERGE Statements¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
4 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
1.000000000000000000 |
4.000000000000000000 |
Avertissement
La transformation ci-dessus ne fonctionne que si l’instruction SELECT à l’intérieur de MERGE sélectionne la table DUAL.
13. Default FORALL transformation¶
Note
Vous pouvez également être intéressé par aides de curseurs en masse.
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
Note
Cette transformation n’est effectuée que lorsqu’aucune des transformations mentionnées précédemment ne peut être réalisée.
14. Multiple FORALL inside a LOOP clause¶
Note
Ce modèle s’applique lorsqu’il y a plus d’un FORALL dans la même procédure et qu’il répond à la structure suivante.
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
54321 |
2 |
54321 |
2 |
54321 |
3 |
54321 |
4 |
54321 |
5 |
54321 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
54321 |
2 |
54321 |
2 |
54321 |
3 |
54321 |
4 |
54321 |
5 |
54321 |
6 |
15. Multiple FORALL inside different LOOP clauses¶
Note
Ce modèle s’applique lorsqu’il y a plus d’un FORALL dans la même procédure et qu’il répond à la structure suivante.
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
54321 |
2 |
54321 |
2 |
54321 |
3 |
54321 |
4 |
54321 |
5 |
54321 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
54321 |
2 |
54321 |
2 |
54321 |
3 |
54321 |
4 |
54321 |
5 |
54321 |
6 |
16. FORALL with MERGE INTO with LOG ERRORS¶
Avertissement
Ce modèle n’est pas encore mis en œuvre
Oracle¶
LOG ERRORS¶
Snowflake¶
LOG ERRORS¶
17. FORALL with INSERT with LOG ERRORS¶
Avertissement
Ce modèle n’est pas encore mis en œuvre
Oracle¶
LOG ERRORS¶
Snowflake¶
LOG ERRORS¶
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-EWI-0030: L’instruction ci-dessous a des utilisations de Dynamic SQL.
SSC-EWI-0036 : Type de données converti en un autre type de données.
SSC-EWI-0056 : Create table n’est pas pris en charge.
SSC-EWI-0058: La fonctionnalité n’est pas prise en charge actuellement par Snowflake Scripting.
SSC-EWI-0062: L’utilisation du type personnalisé a changé en variante.
SSC-EWI-OR0049: Les constantes de paquet dans le paquet avec état ne sont pas encore prises en charge.
SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake.
SSC-FDM-0015: Type personnalisé référencé dans la requête introuvable.
SSC-PRF-0001: Cette instruction a des utilisations des opérations en masse de curseur Fetch.
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.
IF¶
Description¶
L’instruction IF permet d’exécuter ou d’ignorer une séquence d’une ou plusieurs instructions, en fonction de la valeur d’une expression BOOLEAN. Pour plus d’informations sur Oracle IF, cliquez ici.
Modèles d’échantillons de sources¶
Sample auxiliary table¶
Variantes possibles de IF¶
Oracle¶
Code 1¶
Code 2¶
Code 3¶
Code 4¶
Résultat 1¶
COL1 |
|---|
un |
Résultat 2¶
COL1 |
|---|
Entrée inattendue. |
Résultat 3¶
COL1 |
|---|
trois |
Résultat 4¶
COL1 |
|---|
Entrée inattendue. |
Exécution de scripts Snowflake¶
Code 1¶
Code 2¶
Code 3¶
Code 4¶
Résultat 1¶
COL1 |
|---|
un |
Résultat 2¶
COL1 |
|---|
Entrée inattendue. |
Résultat 3¶
COL1 |
|---|
trois |
Résultat 4¶
COL1 |
|---|
Entrée inattendue. |
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
Pas d’EWIs connexes.
IS EMPTY¶
Il s’agit d’une référence de traduction pour convertir l’instruction IS EMPTY Oracle en instruction Snowflake
Avertissement
Les informations de cette section, en cours de modification, sont sujettes à modification.
Description¶
Utilisez les conditions IS [[NOT] EMPTY pour vérifier si une table imbriquée spécifiée est vide, que des éléments de la collection soient ou non NULL. (Documentation.)
Syntaxe Oracle¶
Modèles d’échantillons de sources¶
Oracle¶
L’exemple suivant illustre l’utilisation de l’instruction IS EMPTY. L’instruction est appliquée à une table imbriquée dont le type de définition est UDT. La sortie indique le nom des employés qui n’ont pas de numéro de téléphone.
Sortie¶
EMP_NAME |
|---|
Jane Smith |
Snowflake¶
La requête Snowflake présentée ci-dessous est l’équivalence de la fonctionnalité de l’instruction IS EMPTY. En particulier, l’instruction IS EMPTY fait la différence entre un objet NULL et un objet EMPTY.
Remarquez que les types définis par l’utilisateur sont transformés en VARIANT. Le type VARIANT dans Snowflake permet de stocker des objets et des tableaux. Comme une table imbriquée est une séquence d’informations, le type ARRAY est le type le plus approprié pour les redéfinir et vérifier si l’objet ARRAY est vide.
La solution équivalente ARRAY_SIZE permet également de demander la nullité de la table imbriquée (transformée en VARIANT). En d’autres termes, le type VARIANT peut également stocker des NULLs et des ARRAYs vides.
Sortie¶
EMP_NAME |
|---|
Jane Smith |
Autres combinaisons possibles¶
| Description | Oracle | Snowflake |
|---|---|---|
| Ask for a IS NOT EMPTY | | |
| Ask for NULL instead of EMPTY | | |
Problèmes connus¶
1. Les types définis par l’utilisateur sont en cours de transformation en types de variantes.¶
Les types définis par l’utilisateur ne sont pas pris en charge et sont donc transformés en types de variantes, ce qui peut nécessiter un effort manuel pour garantir certaines fonctions.
Consultez la page suivante pour plus d’informations :
**2. Les tables imbriquées ne sont pas prises en charge.¶
Les tables imbriquées ne sont pas prises en charge actuellement. La meilleure approche sur la base de cette équivalence consiste à traiter les tables imbriquées comme des variantes, mais à déclarer des tableaux contenant des données JSON et à exécuter la fonction PARSE_JSON Snowflake pour remplir les informations imbriquées.
Consultez les pages suivantes pour plus d’informations :
3. Les instructions d’insertion ne sont pas prises en charge pour les types définis par l’utilisateur.¶
Les types définis par l’utilisateur n’étant pas pris en charge, les instructions d’insertion dans ces types ne sont pas prises en charge. Dans les tables imbriquées, l’instruction INSERT INTO ... VALUES doit être remplacée par INSERT INTO...SELECT, car la fonction ARRAY_CONSTRUCT est censée être utilisée dans ce modèle.
Consultez la page suivante pour plus d’informations :
4. La logique doit être adaptée aux types ARRAY.¶
Comme les tables imbriquées doivent être transformées de manière équivalente à VARIANT et se comporter comme ARRAYs,, la fonctionnalité et la logique de mise en œuvre des procédures et d’interaction avec les données doivent être adaptées.
Examinez les exemples suivants :
4.1 Équivalence des procédures¶
Oracle¶
Snowflake¶
Sortie¶
PROC1 |
|---|
IS EMPTY |
4.2 Instructions de sélection¶
Les sorties peuvent différer d’une table à l’autre sur les ARRAYs.
Oracle¶
Sortie¶
PHONE_NUMBER |
|---|
1234567890 |
Snowflake¶
Sortie¶
PHONE_NUMBERS_COL |
|---|
[ 1234567890 ] |
EWIs connexes¶
SSC-EWI-0056 : Create table n’est pas pris en charge.
SSC-EWI-0062: L’utilisation du type personnalisé a changé en variante.
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
SSC-EWI-OR0035: La fonction de table n’est pas prise en charge lorsqu’elle est utilisée sous la forme d’un ensemble d’expressions.
SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake.
SSC-FDM-0015: Type personnalisé référencé dans la requête introuvable.
SSC-FDM-OR0035: DBMS_OUTPUT.PUTLINE consultez l’implémentation UDF.
LOCK TABLE¶
Note
Instruction non pertinente.
Avertissement
Notez que cette instruction a été supprimée de la migration ; car la syntaxe n’est pas pertinente. Cela signifie qu’elle n’est pas requise dans Snowflake.
Description¶
Dans Oracle, l’instruction LOCK TABLE permet d’acquérir explicitement un verrou de table partagé ou exclusif sur la table spécifiée. Le verrou de table dure jusqu’à la fin de la transaction en cours. Pour plus d’informations, cliquez ici.
Syntaxe
Modèles d’échantillons de sources¶
Table verrouillée¶
Notez que dans cet exemple, l’instruction LOCK TABLE a été supprimée. En effet, Snowflake gère le verrouillage d’une manière différente, par le biais de transactions.
Oracle¶
Snowflake¶
LOG ERROR¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
L’instruction
FORALLexécute une instruction DML plusieurs fois, avec des valeurs différentes dans les clausesVALUESetWHERE. (Référence linguistique Oracle PL/SQL Instruction FORALL).
Syntaxe Oracle¶
Avertissement
Snowflake Scripting n’a pas d’équivalence directe avec l’instruction FORALL, mais peut être émulé avec différentes solutions de contournement pour obtenir une équivalence fonctionnelle.
Modèles d’échantillons de sources¶
Données de configuration¶
Oracle¶
Tables¶
Snowflake¶
Tables¶
1. MERGE INTO Inside a FORALL¶
Oracle¶
Remarque
Les trois cas ci-dessous ont la même transformation en Snowflake Scripting et sont fonctionnellement équivalents.
Cas 1.¶
Snowflake¶
FORALL avec collection d’enregistrements¶
2. FORALL With INSERT INTO¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
3. FORALL With Multiple Fetched Collections¶
Oracle¶
Avec INSERT INTO¶
Avec UPDATE¶
Résultats INSERT INTO¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
1 |
2 |
Résultats UPDATE¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
Snowflake¶
Avec INSERT INTO¶
Avec UPDATE¶
Résultats INSERT INTO¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
Résultats UPDATE¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
4. FORALL With Record of Collections¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL Scripting¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
5. FORALL With Dynamic SQL¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000 |
6. FORALL Without LOOPS¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1 |
2 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
1.000000000000000000 |
2.000000000000000000 |
1.000000000000000000 |
2.000000000000000000 |
2.000000000000000000 |
3.000000000000000000 |
3.000000000000000000 |
4.000000000000000000 |
4.000000000000000000 |
5.000000000000000000 |
5.000000000000000000 |
6.000000000000000000 |
7. FORALL With UPDATE Statements¶
Oracle¶
Exemple FORALL¶
Résultats¶
COLUMN1 |
COLUMN2 |
|---|---|
54321 |
2 |
Snowflake¶
Équivalent FORALL¶
Résultats¶
8. FORALL With DELETE Statements¶
Oracle¶
Exemple FORALL¶
Résultats¶
Snowflake¶
Équivalent FORALL¶
Résultats¶
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-EWI-0030: L’instruction ci-dessous a des utilisations de Dynamic SQL.
SSC-EWI-0036 : Type de données converti en un autre type de données.
SSC-EWI-0058: La fonctionnalité n’est pas prise en charge actuellement par Snowflake Scripting.
SSC-EWI-0062: L’utilisation du type personnalisé a changé en variante.
SSC-EWI-OR0129: TYPE L’attribut n’a pas pu être résolu.
SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake.
SSC-FDM-OR0031: L’erreur de clause de journalisation dans les instructions DML n’est pas prise en charge par Snowflake.
SSC-PRF-0001: Cette instruction a des utilisations des opérations en masse de curseur Fetch.
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.
LOOP¶
Référence de traduction pour convertir l’instruction Oracle LOOP en instruction Snowflake Scripting
Description¶
Avec chaque itération de l’instruction de base
LOOP, ses instructions s’exécutent et contrôlent les retours en haut de la boucle. L’instructionLOOPse termine lorsqu’une instruction à l’intérieur de la boucle transfère le contrôle en dehors de la boucle ou lève une exception.\ (Référence linguistique Oracle PL/SQL Instruction BASIC LOOP).
Syntaxe BASIC LOOP Oracle¶
Syntaxe BASIC LOOP Snowflake Scripting¶
Le comportement d’Oracle BASIC LOOP peut également être modifié à l’aide des instructions :
Modèles d’échantillons de sources¶
Cas simple de Loop¶
Remarque
Ce cas est équivalent sur le plan fonctionnel.
Oracle¶
Résultat¶
ITERATOR |
|---|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Exécution de scripts Snowflake¶
Résultat¶
ITERATOR |
|---|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
Pas d’EWIs connexes.
OUTPUT PARAMETERS¶
Description¶
Un paramètre de sortie est un paramètre dont la valeur est transmise à l’extérieur du module de procédure stockée/fonction, vers le bloc appelant PL/SQL. Les paramètres de sortie n’étant pas pris en charge par le support Snowflake Scripting, une solution a été mise en œuvre afin d’émuler leur fonctionnalité.
Modèles d’échantillons de sources¶
Paramètre unique Out¶
Oracle¶
Exécution de scripts Snowflake¶
Plusieurs paramètres Out¶
Oracle¶
Exécution de scripts Snowflake¶
Afin de vérifier que la fonctionnalité est correctement émulée, la requête suivante va exécuter la procédure et un SELECT à partir de la table mentionnée précédemment.
Oracle¶
Résultat¶
COL1 |
COL2 |
|---|---|
123 |
-1 |
123 |
456 |
Exécution de scripts Snowflake¶
Résultat¶
COL1 |
COL2 |
|---|---|
123.000000000000000000 |
-1 |
123.000000000000000000 |
456.000000000000000000 |
Paramètres OUT du type de données de client¶
Lorsque le paramètre de sortie est un type client, le processus est similaire à un type de données classique.
Oracle¶
Exécution de scripts Snowflake¶
Paramètres OUT du curseur¶
Les paramètres de sortie du curseur ne sont pas pris en charge dans Snowflake. Malgré cela, une solution qui émule le comportement de Oracle est appliquée au code transformé. La procédure avec les paramètres de sortie génère une table temporaire avec un nom dynamique, et l’appel de procédure définira le nom de la table temporaire sous la forme d’une chaîne pour créer la table dans l’appel de la procédure.
Oracle¶
Exécution de scripts Snowflake¶
Paramètres OUT d’enregistrement¶
Les enregistrements ne sont pas pris en charge nativement dans Snowflake ; cependant, une solution de contournement a été utilisée pour les émuler en tant que paramètres de sortie. En définissant une variable OBJECT au lieu de l’enregistrement, nous pouvons émuler la structure des champs de l’enregistrement en affectant le résultat du paramètre de sortie à chaque propriété d’objet. En outre, pour chaque champ d’enregistrement affecté en tant que paramètre de sortie, une nouvelle variable avec le type de champ sera générée.
Oracle¶
Exécution de scripts Snowflake¶
Variables de paquet comme paramètres OUT¶
Les paquets ne sont pas pris en charge dans Snowflake, donc leurs membres locaux, comme les variables ou les constantes, doivent également être préservés à l’aide d’une solution de contournement. Dans ce scénario, la variable de paquet est émulée à l’aide d’une variable de session qui est mise à jour après la définition d’une variable locale avec le résultat du paramètre de sortie.
Oracle¶
Exécution de scripts Snowflake¶
Problèmes connus¶
1. Procedures with output parameters inside packages may not work correctly¶
Actuellement, il y a un problème de collecte des informations sémantiques des procédures qui résident à l’intérieur des paquets, ce qui explique pourquoi la transformation des paramètres de sortie peut fonctionner partiellement ou ne pas fonctionner du tout. Cette question fait déjà l’objet d’un document de travail.
2. Some data types may not work properly¶
Comme le montre la transformation, lorsqu’on récupère la valeur à partir des procédures appelées, une conversion implicite est effectuée de VARIANT vers le type spécifié par la variable. Comme il existe de nombreux types de données possibles, certaines transformations peuvent échouer ou contenir des données différentes.
EWIs connexes¶
SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake.
SSC-FDM-0007: Élément avec des dépendances manquantes.
SSC-FDM-0015: Type de données non reconnu.
NESTED PROCEDURES¶
Description¶
Dans PL/SQL d’Oracle, la définition NESTED PROCEDURES fait référence à une procédure déclarée et définie dans la section déclarative d’un autre bloc PL/SQL. Ce bloc parent peut être une autre procédure, une fonction ou un corps de paquet. Pour plus d’informations, reportez-vous à Déclarations et définitions des procédures Oracle.
Note
Les transformations décrites ci-dessous sont spécifiques aux procédures intégrées dans d’autres procédures ou paquets.
Modèles d’échantillons de sources¶
Mode de paramètre IN pour les procédures imbriquées¶
Le mot clé IN sera supprimé, car les procédures imbriquées de Snowflake ne prennent en charge que les paramètres IN implicitement.
Oracle¶
Exécution de scripts Snowflake¶
Mode de paramètre OUT pour les procédures imbriquées¶
Les procédures imbriquées de SnowScript ne prennent pas en charge les paramètres de sortie. Pour répliquer cette fonctionnalité dans Snowflake, un type RETURN doit être créé en fonction des paramètres de sortie.
S’il n’y a qu’un seul paramètre de sortie, ce paramètre sera renvoyé à la fin. Dans les cas avec plusieurs paramètres de sortie, une construction d’objet sera générée contenant leurs valeurs. Pendant l’appel, ces valeurs seront affectées à une variable et, par la suite, ces résultats seront affectés aux variables ou paramètres correspondants.
Oracle¶
Exécution de scripts Snowflake¶
Plusieurs paramètres OUT dans les procédures imbriquées¶
Oracle¶
Exécution de scripts Snowflake¶
Procédures imbriquées à plusieurs niveaux¶
Snowflake n’autorise qu’un seul niveau d’imbrication pour les procédures imbriquées. Par conséquent, une procédure imbriquée dans une autre procédure imbriquée n’est pas prise en charge. Si cela se produit, la transformation inclura l’erreur !!!RESOLVE EWI!!! /*** SSC-EWI-0111 - ONLY ONE LEVEL OF NESTING IS ALLOWED FOR NESTED PROCEDURES IN SNOWFLAKE. ***/!!!
Oracle¶
Exécution de scripts Snowflake¶
Valeurs par défaut dans les procédures imbriquées¶
Les arguments de procédures imbriquées ne prennent pas en charge les clauses par défaut. Par conséquent, si un appel de procédure imbriqué omet un paramètre facultatif, la valeur par défaut de cet argument doit être soumise dans l’appel de procédure. SnowConvert AI identifie automatiquement ces scénarios et remplit les appels de procédure de manière appropriée.
Oracle¶
Exécution de scripts Snowflake¶
Surcharge de procédures imbriquées¶
Snowflake ne prend pas en charge la surcharge des procédures imbriquées. Si cela se produit, l’EWI SSC-EWI-0112 - NESTED PROCEDURE OVERLOADING IS NOT SUPPORTED sera ajouté.
Oracle¶
Exécution de scripts Snowflake¶
Procédure imbriquée sans liste de paramètres¶
Dans Snowflake, une définition de procédure imbriquée nécessite des parenthèses vides () pour être syntaxiquement valide lorsqu’il n’a pas de paramètres ; contrairement à Oracle, où ils ne sont pas nécessaires. SnowConvert AI les ajoutera automatiquement au cours de la traduction.
Oracle¶
Exécution de scripts Snowflake¶
Procédure imbriquée avec paramètre de sortie REFCURSOR¶
Oracle¶
Exécution de scripts Snowflake¶
Procédure imbriquée avec option de paramètre NOCOPY¶
Dans PL/SQL d’Oracle, le mot-clé NOCOPY est un indice d’optimisation pour les paramètres de procédure OUT et IN OUT. Par défaut, Oracle transmet ces paramètres par valeur, ce qui crée une copie coûteuse des données pendant l’appel, qui sont copiées à la fin. Cela peut entraîner une surcharge importante des performances pour les grandes structures de données.
NOCOPY demande à Oracle de transmettre les paramètres par référence, ce qui permet à la procédure de modifier directement les données d’origine. Cela élimine la surcharge générée par la copie et améliore les performances. Cependant, les modifications sont immédiates et ne sont pas implicitement annulées si une exception non gérée se produit dans la procédure.
Par conséquent, nous supprimerons l’option de paramètres NOCOPY et ajouterons FDM SSC-FDM-OR0050 - EXCEPTIONS WITH NOCOPY PARAMETERS MAY LEAD TO DATA INCONSISTENCY. En effet, l’exécution de la procédure s’arrête en cas d’exception, ce qui empêche l’instruction RETURN d’être atteinte. En conséquence, la variable du bloc de déclaration de l’appelant conserve ses valeurs initiales, car la procédure ne parvient pas à renvoyer avec succès une nouvelle valeur pour l’affectation.
Oracle¶
Exécution de scripts Snowflake¶
Problèmes connus¶
1. Multi-level Nested Procedures¶
Les efforts de transformation pour les procédures imbriquées dans Snowflake sont limités à celles imbriquées directement dans d’autres procédures, ne prenant en charge qu’un seul niveau d’imbrication. Si le niveau d’imbrication dépasse un, ou si une procédure est imbriquée dans une fonction autonome, la transformation n’est pas prise en charge, et l’EWI **RESOLVE EWI** /**** SSC-EWI-0111 - ONLY ONE LEVEL OF NESTING IS ALLOWED FOR NESTED PROCEDURES IN SNOWFLAKE. ****/! sera ajouté.
2. Nested procedures overloading¶
De plus, la surcharge des procédures imbriquées n’est pas prise en charge dans Snowflake. Dans de tels cas, l’EWI **RESOLVE EWI** /**** SSC-EWI-0112 - NESTED PROCEDURE OVERLOADING IS NOT SUPPORTED. ****/! sera ajouté.
3. Nested procedures within anonymous blocks¶
La transformation pour les procédures imbriquées dans les blocs anonymes est actuellement en attente. L’EWI **RESOLVE EWI** /**** SSC-EWI-OR0057 - TRANSFORMATION FOR NESTED PROCEDURE OR FUNCTION IS NOT SUPPORTED IN THIS SCENARIO ****/! sera ajouté.
EWIs connexes¶
SSC-FDM-OR0050: Les exceptions avec les paramètres
NOCOPYpeuvent entraîner une incohérence des données.SSC-EWI-OR0057: La transformation pour la procédure ou la fonction imbriquée n’est pas prise en charge.
SSC-EWI-0111: Un seul niveau d’imbrication est autorisé pour les procédures imbriquées dans Snowflake.
SSC-EWI-0112: La surcharge des procédures imbriquées n’est pas prise en charge.
PROCEDURE CALL¶
Référence de traduction pour PROCEDURE CALL alias SUBPROGRAM INVOCATION
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cette section décrit la syntaxe des invocations de sous-programmes à l’intérieur des blocs PL, tels que les procédures ou les blocs anonymes.
Pour plus d’informations à ce sujet, veuillez vous référer à la documentation Oracle sur les sous-programmes : (Référence linguistique Oracle PL/SQL Instruction d’invocation de sous-programme)
Les appels de procédure peuvent être migrés vers Snowflake tant qu’il n’y a pas de paramètres optionnels et que leur ordre correspond aux paramètres formels. Veuillez noter que les invocations de procédures sont transférées vers une instruction Call.
Syntaxe d’appel du sous- programme Oracle¶
Snowflake Scripting prend en charge cette instruction, avec toutefois quelques différences fonctionnelles.
Syntaxe d’appel du sous- programme Snowflake Scripting¶
Modèles d’échantillons de sources¶
Note
Examinez la table et la procédure suivantes pour les exemples ci-dessous.
Oracle¶
Snowflake¶
Appel simple¶
Oracle¶
Résultat¶
COL1 |
|---|
1 |
Exécution de scripts Snowflake¶
Résultat¶
COL1 |
|---|
1 |
Appel d’une procédure avec un paramètre facultatif¶
Avertissement
Cet exemple contient une intervention manuelle pour certaines différences fonctionnelles et est utilisé pour les expliquer. Pour plus d’informations sur ces différences, veuillez consulter la section Problèmes connus ci-dessous.
Oracle¶
Résultat¶
COL1 |
|---|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Exécution de scripts Snowflake¶
Résultat¶
COL1 |
|---|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Problèmes connus¶
1. Default parameter reordering¶
Snowflake requires default parameters to appear at the end of the parameter list. SnowConvert AI automatically reorders them and emits an SSC-FDM-0041 notice. When positional callers are detected, they are converted to named arguments.
2. Named parameters are accepted, but not functionally equivalent¶
Named parameters are supported in Snowflake. When default parameters are reordered, SnowConvert AI automatically converts positional call sites to use named arguments to preserve the original semantics.
3. Calling Subprograms with Out Parameters is not supported¶
Snowflake ne prend pas en charge les modes de paramètres, mais une solution est en cours d’implémentation pour émuler leur fonctionnalité. Pour obtenir plus d’informations sur la transformation des paramètres de sortie, veuillez consulter l’article suivant : Paramètres de sortie.
EWIs connexes¶
SSC-FDM-0041: Default parameters were reordered to the end of the parameter list.
SSC-FDM-0007: Élément avec des dépendances manquantes.
RAISE¶
Description¶
L’instruction
RAISElève explicitement une exception.En dehors d’un gestionnaire d’exception, vous devez spécifier le nom de l’exception. À l’intérieur d’un gestionnaire d’exception, si vous omettez le nom de l’exception, l’instruction
RAISElève à nouveau l’exception en cours. (Référence linguistique PL/SQL Instruction Raise)
L’instruction est entièrement prise en charge par Snowflake Scripting, mais tenez compte du fait qu’il peut y avoir des différences entre l’instruction Commit et l’instruction Rollback.
Snowflake Scripting prend en charge cette instruction.
Modèles d’échantillons de sources¶
Levée d’exception simple¶
Oracle¶
Résultat¶
Exécution de scripts Snowflake¶
Résultat¶
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
Pas d’EWIs connexes.
RAISE_APPICATION_ERROR¶
Référence de traduction pour l’instruction raise_application_error.
Description générale¶
La procédure RAISE_APPLICATION_ERROR vous permet d’émettre des messages d’erreur définis par l’utilisateur ORA- à partir de sous-programmes stockés. Ainsi, vous pouvez signaler les erreurs à votre application et éviter de renvoyer des exceptions non gérées (Documentation Oracle).
Syntaxe Oracle¶
Note
error_number est un entier négatif compris entre -20000 .. -20999 et message est une chaîne de caractères d’une longueur maximale de 2048 octets.
Si le troisième paramètre facultatif est TRUE, l’erreur est placée sur la pile des erreurs précédentes. Si le paramètre est FALSE (valeur par défaut), l’erreur remplace toutes les erreurs précédentes.
L’instruction équivalente dans Snowflake est la clause RAISE. Néanmoins, il est exigé de déclarer l’exception définie par l’utilisateur en tant que variable avant d’appeler l’instruction RAISE pour celle-ci.
Syntaxe Snowflake¶
Note
Pour plus d’informations, consultez la documentation Snowflake.
Modèles d’échantillons de sources¶
1. Exception in functions without declaring section¶
Dans ce scénario, la fonction sans section de déclaration est traduite en procédure avec la déclaration d’exception. Veuillez noter que :
Le nom de la variable d’exception est déclaré en casse majuscule.
Le nom de la variable d’exception est basé sur la description et une terminaison est composée d’un nom de code d’exception suivi d’un numéro consécutif.
La section de déclaration est créée même si la fonction ou la procédure initiale ne la contient pas.
Oracle¶
Sortie¶
Snowflake¶
Sortie¶
2. Exception code number outside limits¶
L’exemple suivant montre la traduction commentée dans le corps de la procédure. C’est parce que le code est en dehors des limites applicables à Snowflake. La solution consiste à remplacer le code d’exception par un code disponible dans la section des requêtes.
Oracle¶
Sortie¶
Snowflake¶
Sortie¶
3. Exception stack functionality¶
La fonctionnalité de la pile d’exceptions n’est pas prise en charge dans Snowflake et est supprimée de la déclaration d’exception.
Oracle¶
Sortie¶
Snowflake¶
Sortie¶
4. Multiple exceptions with the same exception code¶
Plusieurs exceptions identiques peuvent coexister dans la section de déclaration et dans les instructions raise.
Oracle¶
Sortie¶
Snowflake¶
Sortie¶
Problèmes connus¶
La fonction SQLREM peut être réexaminée.
Le numéro de code d’exception en dehors des limites applicables dans Snowflake doit être modifié en un code d’exception disponible.
L’ajout à une pile d’erreurs n’est pas pris en charge.
EWIs connexes¶
SSC-EWI-OR0099: Le code d’exception dépasse la limite de Snowflake Scripting.
SSC-FDM-0029: La fonction définie par l’utilisateur a été transformée en procédure Snowflake.
SSC-FDM-OR0011: L’argument booléen a été supprimé, car l’options « ajouter à la pile » n’est pas prise en charge.
UDF CALL¶
Référence de traduction pour la fonction définie par l’utilisateur (UDF) Call
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Comme cela est largement reconnu, les fonctions définies par l’utilisateur non scalaires (UDFs) dans Oracle sont converties en procédures stockées Snowflake pour prendre en charge des fonctionnalités plus complexes.
Cette transformation modifie également la manière dont la fonction est invoquée, passant d’un appel de fonction traditionnel à un appel de procédure stockée.
Pour plus de détails concernant l’invocation des procédures stockées, référez-vous à la documentation accessible ici : PROCEDURE CALL.
Modèles d’échantillons de sources¶
Note
Considérez la fonction et les tables suivantes pour les exemples ci-dessous.
Oracle¶
Snowflake¶
Appel d’UDF¶
Oracle¶
Résultat¶
Exécution de scripts Snowflake¶
Résultat¶
Appel d’UDF dans une requête¶
Lorsqu’un appel de fonction est intégré à une requête, le processus d’invocation devient plus complexe en raison de la limite imposée par Snowflake, qui ne permet pas d’appeler des procédures directement dans les requêtes. Pour surmonter cette limite, l’invocation de la procédure est déplacée en dehors de la requête, et le résultat est assigné à une variable. Cette variable est ensuite référencée dans la requête, ce qui permet d’obtenir une équivalence fonctionnelle. Cette approche permet l’exécution de comportements plus complexes dans le cadre des requêtes Snowflake tout en respectant les contraintes procédurales.
Oracle¶
Résultat¶
Exécution de scripts Snowflake¶
Résultat¶
Problèmes connus¶
1. Unsupported Usage of UDFs in Queries with Query Dependencies¶
Lors de l’appel de fonctions définies par l’utilisateur (UDFs) dans des requêtes avec des dépendances de requête, les scénarios impliquant des fonctions intégrées avec des colonnes comme arguments ne sont pas pris en charge. Cette limite est due au fait que les valeurs des colonnes ne sont pas accessibles depuis l’extérieur de la requête. Voici quelques exemples de scénarios non pris en charge :
\ Les scénarios pris en charge incluent les appels de fonctions avec d’autres types d’arguments tels que des valeurs littérales, des variables externes ou des paramètres. Par exemple :
Dans les scénarios pris en charge, la fonction peut effectivement être migrée.
EWIs connexes¶
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake.
SSC-FDM-0029: La fonction définie par l’utilisateur a été transformée en procédure Snowflake.
WHILE¶
Référence de traduction pour convertir l’instruction Oracle WHILE en instruction Snowflake Scripting
Description¶
L’instruction
WHILELOOPexécute une ou plusieurs instructions alors qu’une condition estTRUE.\ (Référence linguistique Oracle PL/SQL Instruction WHILE).
Syntaxe WHILE Oracle¶
Syntaxe WHILE Snowflake Scripting¶
Le comportement d’Oracle WHILE peut également être modifié à l’aide des instructions :
Modèles d’échantillons de sources¶
Cas simple While¶
Remarque
Ce cas est équivalent sur le plan fonctionnel.
Oracle¶
Résultat¶
ITERATOR |
|---|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Exécution de scripts Snowflake¶
Résultat¶
ITERATOR |
|---|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
Pas d’EWIs connexes.