SnowConvert AI - Oracle - PL/SQL vers Javascript¶
Il s’agit d’une référence de traduction à convertir des instructions PL/SQL vers Snowflake JavaScript
Collections et enregistrements¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Enregistrements¶
Note
Vous pourriez également être intéressé par Déclaration d’enregistrements
Oracle¶
Snowflake¶
Avertissement
La transformation pour « Enregistrement SELECT INTO » est en cours.
Problèmes connus¶
Aucun problème n’a été constaté.
Compilation conditionnelle¶
Description¶
Fournit une compilation conditionnelle basée sur la valeur de vérité d’une condition.
Pour plus d’informations sur Oracle Conditional Compilation IF, cliquez ici.
Modèles d’échantillons de sources¶
Variantes possibles de IF¶
Oracle¶
Exécution de scripts Snowflake¶
Problèmes connus¶
La transformation de la compilation conditionnelle n’est pas prise en charge actuellement.
EWIs connexes¶
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
Instructions de contrôle¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Instruction IF, ELSIF et ELSE¶
Oracle¶
Snowflake¶
Boucle¶
Oracle¶
Snowflake¶
Instruction While¶
Oracle¶
Snowflake¶
EWIs connexes¶
SSC-EWI-0053: L’objet peut ne pas fonctionner.
Déclarations¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Déclaration et affectation de variables¶
Oracle¶
Snowflake¶
Déclaration d’une variable d’enregistrement¶
Note
Vous pouvez également être intéressé par Section sur la transformation des enregistrements.
Oracle¶
Snowflake¶
Type de ligne Déclaration de variable d’enregistrement¶
Oracle¶
Snowflake¶
Déclaration de constantes¶
Oracle¶
Snowflake¶
Déclarations et définition du curseur¶
Oracle¶
Note
Vous pouvez également être intéressé par la fonction d’assistance de curseur
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
Pas d’EWIs connexes.
SSC-EWI-0022: Un ou plusieurs identificateurs de cette instruction ont été considérés comme des paramètres par défaut.
SSC-EWI-0026: The variable may require a cast to date, time or timestamp.
Expressions et opérateurs¶
Expressions¶
Opérateur de concaténation¶
Note
Vous pouvez également être intéressé par la fonction d’assistance aconcat.
La concaténation Oracle est réalisée dans JavaScript à l’aide d’un modèle de littéral. Elle utilise également l”Assistant Concat pour gérer correctement les concaténations avec des nullités.
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Opérateurs logiques¶
Oracle¶
Snowflake¶
Note
Vous pouvez également être intéressé par la onction d’assistance IS NULL.
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Opérateur de comparaison¶
Documentation en cours.
IS [NOT] NULL¶
Note
Vous pouvez également être intéressé par la fonction d’assistance IS NULL.
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Opérateur Like¶
Note
Vous pouvez également être intéressé par la fonction d’assistance de l’opérateur Like
En cas d’opération LIKE, la fonction d’assistance sera appelée à la place.
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
OpérateurBetween¶
Note
Vous pouvez également être intéressé par la fonction d’assistance pour l’opérateur Between.
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Opérateur IN¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Expressions booléennes¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Expressions de fonction¶
Pour les expressions de fonction à l’intérieur des procédures, elles sont converties en fonction ou expression correspondante dans Snowflake. Ces appels de fonction sont transmis à un EXEC avec un CALL ou un SELECT en fonction de la valeur convertie.
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Pour plus d’informations sur les transformations de la fonction, consultez ici.
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
Pas d’EWIs connexes.
SSC-EWI-OR0013: NLS parameter is not supported.
SSC-FDM-OR0042: Le type de date transformé en horodatage a un comportement différent.
Fonctions définies par l’utilisateur¶
Description générale¶
La plupart UDFs Oracle et des UDFs dans les paquets sont transformées en procédures stockées Snowflake, afin de maintenir l’équivalence fonctionnelle, étant donné que les UDFs Snowflake ont quelques limites dans l’exécution des instructions DML (Data Manipulation Language).
Traduction¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Créer une fonction¶
Oracle¶
Snowflake¶
Fonction à l’intérieur du paquet¶
Oracle¶
Snowflake¶
Mappage des types de données de retour¶
Type Oracle PL SQL |
Équivalent Snowflake |
|---|---|
NUMBER |
FLOAT |
LONG |
VARCHAR |
VARCHAR2 |
STRING |
BLOB |
BINARY |
BFILE |
BINARY |
Appel¶
À l’intérieur des requêtes¶
Calls of functions that were transformed to procedures inside queries are converted into an empty Snowflake JavaScript UDF. This Snowflake UDF is generated in the STUB_UDF.sql file inside the UDF Helpers directory.
Oracle¶
Snowflake¶
Dans d’autres fonctions ou procédures stockées¶
Les fonctions qui sont converties en procédures sont appelées à l’aide de la fonction d’assistance Snowflake EXEC.
Oracle¶
Snowflake¶
Oracle¶
Snowflake¶
Différents cas et limites¶
Fonctions avec DMLs¶
Ces fonctions ne peuvent pas être exécutées dans des requêtes dans Oracle, leur utilisation sera donc limitée lors de leur transformation en procédures Snowflake.
Oracle¶
Snowflake¶
Les fonctions ne comportant qu’un seul SELECT INTO¶
Ces fonctions sont transformées en fonctions Snowflake SQL en supprimant la partie INTO de la sélection.
Oracle¶
Snowflake¶
Fonctions avec logique uniquement¶
Les UDFs qui n’utilisent pas d’instruction SQL sont convertis en UDFs JavaScript Snowflake.
Note
Lorsque les fonctions intégrées SQL sont incluses dans la logique, la fonction définie par l’utilisateur est convertie en une procédure Snowflake. La traduction des fonctions intégrées en un équivalent JavaScript est planifiée pour l’avenir.
Exemples pour les fonctions intégrées : UPPER(), TRIM(), ABS().
Oracle¶
Snowflake¶
Fonctions comportant plus d’une instruction SQL¶
Avertissement
Les UDFs transformées en procédures ne peuvent pas être appelées à partir d’une requête.
Oracle¶
Snowflake¶
Fonctions uniquement logiques et fonctions SQL intégrées¶
Note
This transformation is planned to be delivered in the future, currently all functions are being transformed to stored procedures.
Oracle¶
Snowflake¶
RETURN CASE¶
La transformation est la même transformation lorsque CASE est utilisé pour affecter une variable.
Oracle¶
Snowflake¶
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-EWI-0022: Un ou plusieurs identificateurs de cette instruction ont été considérés comme des paramètres par défaut.
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
SSC-FDM-0029: La fonction définie par l’utilisateur a été transformée en procédure Snowflake.
Paquets¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Déclaration des paquets¶
Cette section montre l’équivalence entre les membres d’une déclaration de paquets Oracle et les instructions Snowflake.
Options de traduction de paquets¶
Il existe deux options pour migrer les paquets, chaque option affectera directement le nom des objets à l’intérieur du paquet. Consultez ici comment vous pouvez modifier ce mode dans l’UI.
Supposons que nous ayons le scénario suivant dans Oracle :
Un paquet nommé
MY_PACKAGE.Une procédure à l’intérieur du paquet nommé
MY_PROCEDURE.
Option 1 (utilisation d’un nouveau schéma)¶
Avec cette option, les paquets sont transformés en nouveaux schémas. Les éléments du paquet, tels que les fonctions et les procédures, sont créés dans le nouveau schéma. Si le paquet se trouve déjà à l’intérieur d’un schéma, le nom du paquet sera joint au nom du schéma avec un trait de soulignement.
Il s’agit de l’option par défaut pour la traduction des paquets.
Résultat :
A schema will be created with the name
MY_PACKAGE.Le nom qualifié de la procédure sera mis à jour dans
MY_PACKAGE.MY_PROCEDURE.If the package is inside a schema then the procedure will be updated to
MY_SCHEMA_MY_PACKAGE.MY_PROCEDURE.
Option 2¶
Avec cette option, le nom des éléments du paquet sera joint au nom du paquet avec un trait de soulignement. De nouveaux schémas ne seront pas créés.
Résultat :
Le nom de la procédure sera mis à jour vers
MY_PACKAGE_MY_PROCEDURE.If the package is inside a schema then the procedure will be updated to
MY_SCHEMA.MY_PACKAGE_MY_PROCEDURE.
Créer un paquet¶
L’instruction CREATE PACKAGE sera convertie en instruction CREATE SCHEMA. Tout membre se trouvant à l’intérieur du paquet sera converti à l’extérieur du paquet.
Oracle¶
Transformation avec l’option 1 (utilisation d’un nouveau schéma)¶
Transformation avec l’option 2¶
Avec cette option, le Schéma ne sera pas généré et seuls les éléments internes seront conservés mais avec leurs noms renommés.
Déclaration de procédures et de fonctions¶
Les déclarations de procédures et de fonctions ne sont pas nécessaires pour la transformation vers Snowflake. Les déclarations de procédures ou de fonctions existantes seront commentées.
Oracle¶
Transformation avec l’option 1 (utilisation d’un nouveau schéma)¶
Note
Notez que pour l’option 1, la définition de PROCEDURE dans le paquet est supprimée car elle n’est pas requise par Snowflake.
Déclaration des variables¶
Note
Vous pouvez également être intéressé par la fonction d’assistance des variables.
Les variables du paquet Oracle sont transformées en variables de session Snowflake. Un préfixe est ajouté aux valeurs pour savoir de quel type il s’agit à l’intérieur des procédures stockées. Si la valeur doit être null, un « ~ » est ajouté. Pour cette raison, les variables qui dépendent d’autres variables nécessiteront un SUBSTR et un CAST.
Types de données et mappages de codes¶
Type de données ou valeur |
Code |
|---|---|
Types numériques |
# |
Types de dates |
& |
Types de chaînes |
$ |
Valeurs NULL |
~ |
La transformation des variables sera toujours la même quelle que soit l’option de transformation.
Oracle¶
Snowflake¶
Déclaration des constantes¶
La déclaration des constantes sera déclarée à l’intérieur de la procédure ou des fonctions qui les utilisent. Les déclarations de constantes de paquets existantes seront commentées et un avertissement sera ajouté.
Oracle¶
Transformation avec l’option 1
Note
Notez que la définition de PROCEDURE dans le paquet est supprimée car elle n’est pas exigée par Snowflake.
Autres membres du paquet¶
La transformation des autres membres du paquet, tels que les curseurs, les exceptions et les types définis par l’utilisateur, est encore en cours.
Oracle¶
Transformation avec l’option 1¶
Définition du corps du paquet¶
Cette section montre l’équivalence entre les membres de la définition du corps du paquet Oracle et les instructions Snowflake.
Créer le corps du paquet¶
Les éléments à l’intérieur d’un corps de paquet vont être extraits du paquet. Le corps du paquet disparaissant, l’instruction Create Package Body est supprimée dans le code converti.
Définition des procédures¶
Les procédures stockées à l’intérieur des paquets utilisent les mêmes transformations que celles définies dans la référence de traduction PL/SQL.
Oracle¶
Transformation avec l’option 1¶
Transformation avec l’option 2¶
Définition des fonctions¶
Les fonctions contenues dans les corps des paquets sont converties en procédures stockées Snowflake.
Oracle¶
Transformation avec l’option 1¶
Transformation avec l’option 2¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Autres membres du corps du paquet¶
Veuillez vous référer à la section « autres membres du paquet » dans Déclaration des paquets
Utilisation des membres du paquet¶
Appel de procédures à l’intérieur des paquets¶
Si la procédure se trouve à l’intérieur d’un paquet et que le paquet se trouve à l’intérieur d’un schéma, l’appel sera renommé.
Oracle¶
Transformation avec l’option 1¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Transformation avec l’option 2¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Avec cette option, l’appel des procédures sera renommé en fonction du renommage de la déclaration de la procédure. Le nom du schéma sera séparé du nom de la procédure par un point.
Snowflake¶
Variables des paquets à l’intérieur des procédures¶
Note
Les variables des paquets sont transformées en variables de session. Ces variables sont utilisables par le biais de « l”assistance des variables de paquet ».
Note
Cet échantillon utilise des variables déclarées dans les paquets de la section Déclaration des variables.
Oracle¶
Snowflake¶
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-EWI-0053: L’objet peut ne pas fonctionner.
SSC-EWI-OR0049: Les constantes de paquet dans le paquet avec état ne sont pas encore prises en charge.
Procédures¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Exemple 1 : Conversion des procédures de base
Oracle¶
Snowflake¶
Exemple 2 : Conversion des procédures avec des instructions de base : Déclaration, affectation, déclaration de curseur, curseur FOR, Open, LOOP, CLOSE, IF,
Oracle¶
Snowflake¶
Appel de procédures à l’intérieur d’une autre procédure¶
Oracle¶
Snowflake¶
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-EWI-0022: Un ou plusieurs identificateurs de cette instruction ont été considérés comme des paramètres par défaut.
SSC-FDM-OR0012: Les instructions COMMIT et ROLLBACK nécessitent une configuration adéquate pour fonctionner comme prévu.
Éléments de langue SQL¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Curseur FOR LOOP¶
Note
Vous pouvez également être intéressé par la fonction d’assistance de curseur et Déclaration de curseur.
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Instruction OPEN, FETCH et CLOSE¶
Note
Vous pouvez également être intéressé par la fonction d’assistance de curseur et Déclaration de curseur.
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Avertissement
Transformation for the following lines corresponds to custom types, which are work in progress:
Actuellement, l’instruction suivante est émise mais la classe n’est pas encore créée. Un avertissement sera appliqué à l’avenir à toutes les utilisations de types personnalisés non pris en charge.
Curseur implicite SQL¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
EXIT¶
Avertissement
La transformation des étiquettes est un travail en cours.
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Execute Immediate¶
Note
Vous pouvez également être intéressé par la fonction d’assistance EXEC
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Avertissement
La clause « RETURNING INTO » nécessitant une analyse particulière de l’instruction exécutée, sa traduction est planifiée pour l’avenir.
Avertissement
Transformation for the following line corresponds to collection types, which is work in progress:
Actuellement, l’instruction suivante est émise mais la classe n’est pas encore créée. Un avertissement sera appliqué à l’avenir à toutes les utilisations de types personnalisés non pris en charge.
EXECUTE IMMEDIATE ci-dessous, lié à la variable BULK COLLECT dans la variable sals, est également en cours d’élaboration.
Erreurs et gestion des exceptions¶
Note
Vous pouvez également être intéressé par la fonction d’assistance Raise
Utilisation de l’assistant Raise¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Lorsqu’il n’y a pas de gestionnaire OTHERS, SnowConvert AI utilise la casse « par défaut » dans le changement qui renvoie l’objet d’erreur d’origine.
Commit¶
Note
Vous pouvez également être intéressé par la fonction d’assistance EXEC
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
CASE¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
CASE dans une affectation de variable¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Appel à des programmes C ou Java externes¶
Oracle¶
Snowflake¶
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-EWI-0022: Un ou plusieurs identificateurs dans une instruction spécifique sont considérés comme des paramètres par défaut.
SSC-EWI-0053: L’objet peut ne pas fonctionner.
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
SSC-EWI-OR0052: La déclaration des exceptions est gérée par la fonction Raise.
SSC-EWI-OR0072: Membre procédural non pris en charge.
SSC-EWI-OR0075: La clause actuelle n’est pas prise en charge dans Snowflake.
SSC-EWI-OR0104: Variable de collection inutilisable.
SSC-FDM-OR0007: Snowflake ne prend pas en charge la gestion des versions des objets. Les développeurs doivent envisager d’autres méthodes pour la gestion des versions du code.
SSC-FDM-OR0009: SQL IMPLICIT CURSOR VALUES MAY DIFFER.
SSC-FDM-OR0011: L’argument booléen a été supprimé, car l’option « ajouter à la pile » n’est pas prise en charge.
SSC-FDM-OR0012: Les instructionsCOMMIT et ROLLBACK nécessitent une configuration adéquate pour fonctionner comme prévu.
Instructions DDL - DML¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Note
Toutes les instructions utilisent la fonction d’assistance EXEC.
SELECT¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
SELECT INTO¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
INSERT et INSERT INTOSELECT¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
DELETE¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
UPDATE¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
MERGE¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-EWI-0022: Un ou plusieurs identificateurs dans une instruction spécifique sont considérés comme des paramètres par défaut.
Synonymes¶
Les synonymes utilisés dans les blocs PL/SQL sont remplacés par l’objet référencé et le schéma est ajouté si nécessaire.
Schéma implicite ajouté¶
Lorsque la procédure ou la fonction se trouve à l’intérieur d’un schéma et que le synonyme se trouve à l’intérieur de ce schéma, mais qu’il est utilisé sans le schéma, le code converti ajoutera le schéma.
Oracle¶
Snowflake¶
Schéma de l’objet référencé ajouté¶
Lorsque le synonyme fait référence à un objet qui se trouve dans un schéma spécifique, le nom du schéma sera ajouté à l’objet référencé.
Oracle¶
Snowflake¶
EWIs connexes¶
SSC-FDM-OR0005: Les synonymes ne sont pas pris en charge dans Snowflake, mais les références à ce synonyme ont été modifiées par le nom d’objet d’origine.
SSC-FDM-OR0042: Le type de date transformé en horodatage a un comportement différent.
Déclencheurs¶
Avertissement
Les déclencheurs ne sont pas pris en charge par Snowflake, ils ne seront donc pas migrés automatiquement.
Pour l’instant, Snowflake ne fournit pas de mécanisme direct pour les déclencheurs, mais certaines fonctions de Snowflake peuvent être utilisées pour obtenir des résultats similaires.
Nous vous recommandons de procéder à une analyse de vos déclencheurs et de les classer par objectif :
Déclencheurs d’audit : L’objectif de ces déclencheurs est de capturer des informations et d’enregistrer les modifications apportées à certaines tables dans d’autres tables.
Déclencheurs d’initialisation : L’objectif de ces déclencheurs est d’ajouter des valeurs par défaut aux nouveaux enregistrements. Ils se situent généralement avant ou après les déclencheurs d’insertion
Déclencheurs de barrière de règle métier : ces déclencheurs s’appliquent généralement à BEFORE/AFTER DELETE ou UPDATE. Ces déclencheurs sont destinés à créer une barrière pour éviter l’entrée ou la suppression de données qui enfreindraient certaines règles de gestion.
Déclencheurs Instead of : utilisés par exemple pour permettre des insertions dans les vues ne sont pas pris en charge. La recommandation sera de transformer cette logique en une procédure stockée et d’introduire des appels chaque fois qu’ils ont été utilisés pour des opérations d’insertion/suppression/mise à jour.
Déclencheurs de base de données : ne pouvant être répliqués, il est également recommandé d’encapsuler cette logique dans une procédure stockée. Mais cette logique devra être invoquée manuellement.
Déclencheurs génériques After : pour certains déclencheurs After, les flux et les tâches peuvent être exploités, voir la section ci-dessous.
Déclencheur d’audit¶
Déclencheurs Before UPDATE pour les cas d’audit comme celui-ci ne peuvent pas être traités directement. Pour le cas INSERT, vous pouvez utiliser la valeur par défaut expliquée pour le déclencheur d’initialisation. Toutefois, dans le cas de la mise à jour, la seule option consiste à utiliser une tâche, comme cela est expliqué plus loin pour les déclencheurs AFTER. Cependant, l’adresse LAST_UPDATE ne sera pas exacte, il y aura un décalage car la modification enregistrée se fera au moment de l’exécution de la tâche (par exemple, si les tâches s’exécutent toutes les 5 minutes, LAST_UPDATE sera enregistrée 5 minutes plus tard)_.
Pour les cas UPDATE, il n’est pas possible d’essayer de capturer CURRENT_USER.
D’autres cas de déclencheurs AUDIT se présentent lorsqu’ils enregistrent les modifications d’une table dans une table de mise à jour. La technique du déclencheur AFTER décrite plus loin peut être utilisée, mais là encore, les informations USER ne peuvent pas être suivies et les informations TIME ne seront pas exactes.
Déclencheur d’initialisation¶
Pour ces déclencheurs, vous pouvez utiliser les valeurs par défaut des colonnes de Snowflake, par exemple pour les valeurs de séquence.
Vous pouvez également utiliser CURRENT__ USER() et CURRENT_TIMESTAMP au lieu de USER ou SYS_TIMESTAMP_
Cela ne s’applique qu’aux cas BEFORE INSERT ou AFTER INSERT.
Barrière de règle métier¶
Dans ces cas, vous devrez mettre en ligne les actions de déclencheur après/avant l’exécution de DELETE ou UPDATE.
Une tâche n’est pas recommandée ici car les tâches sont exécutées sur une planification, et la ligne sera alors déjà modifiée.
Avertissement
Cette section présente une solution de contournement connue pour la mise en œuvre partielle des déclencheurs AFTER.
GENERIC AFTER TRIGGER¶
Exemple 1 : Conversion de base du déclencheur¶
Oracle¶
Snowflake¶
Note
Fonctions d’aide SnowConvert AI Code supprimé de l’exemple. Vous pouvez les trouver ici.
Explication approfondie du code Snowflake¶
Flux¶
Ces derniers se chargent de stocker les modifications apportées à la table. Veuillez noter :
Ils stockent le décalage entre l’état actuel de la table et le dernier décalage stocké par le flux lui-même. Veuillez en tenir compte pour la facturation.
Notez qu’ils ne stockent pas les informations des mises à jour, mais les stockent plutôt comme une insertion.
De la même manière, ils ne peuvent pas être configurés pour suivre uniquement les suppressions ou uniquement les mises à jour, et doivent donc être filtrés dans la procédure et la tâche elle-même (voir ci-dessous).
Procédures¶
Celles-ci se chargent d’exécuter la ou les instructions du déclencheur SQL. Veuillez noter :
Il est nécessaire de purger le flux, d’où la création d’un nouveau flux à la fin de la procédure.
Toutes les actions qui doivent être filtrées (comme les déclencheurs AFTER-INSERTs uniquement) devront être filtrées dans la procédure stockée elle-même.
Tâches¶
Elles se chargent de vérifier régulièrement les changements de flux et d’exécuter en conséquence la ou les instructions du déclencheur SQL. Veuillez noter :
Les tâches fonctionnent selon une planification, une action ne les déclenche pas. Cela signifie qu’il y aura des contrôles planifiés par déclencheur sans qu’aucune modification des données ne soit effectuée dans la table.
Les tâches ne peuvent pas être configurées pour s’exécuter plus d’une fois toutes les soixante (60) secondes, car la durée minimale est d’une (1) minute.
Une fois que le flux a détecté des changements, il y aura, dans le pire des cas, un délai de soixante (60) secondes entre la détection du changement et l’exécution du déclencheur.
Bien que l’ajout de WHEN évite l’exécution de la tâche, Snowflake ajoute toujours des frais à chaque fois qu’il est évalué ; et ces frais seront ajoutés à la facture lorsque le déclencheur s’exécutera réellement.
La tâche a besoin d’un entrepôt pour être exécutée et devra être définie manuellement par le client.
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
Pas d’EWIs connexes.
Attribut TYPE¶
Description¶
Ce chapitre concerne la transformation de l”attribut TYPE lorsqu’il fait référence à une colonne, une variable, un enregistrement, une collection ou un curseur. La transformation consiste à obtenir le type de données de l’élément de référence et à remplacer l’attribut TYPE de l’élément de référence par le type de données obtenu.
Modèles d’échantillons de sources¶
Attribut TYPE pour les colonnes¶
Dans ce cas, l’élément référencé est une colonne d’une table créée précédemment.
Oracle¶
Snowflake¶
Attribut TYPE pour les variables¶
Dans ce cas, l’élément référencé est une variable déclarée précédemment.
Oracle¶
Snowflake¶
Note
Vous trouvez plus d’informations sur le type de données FLOAT dans la section Type de données FLOAT
Attribut TYPE pour les enregistrements¶
Dans ce cas, l’élément référencé est un enregistrement déclaré précédemment.
Oracle¶
Snowflake¶
Dans l’exemple précédent, la variable qui fait référence à la variable d’enregistrement est remplacée par OBJECT, comme la variable d’enregistrement, et la variable qui fait référence au champ d’enregistrement est remplacée par le type de données du champ d’enregistrement (NUMBER (38, 18)).
Avertissement
Ces changements ne fonctionnent pas pour les enregistrements intégrés.
Note
Vous trouverez de plus amples informations sur les enregistrements dans la section Collection et enregistrements.
Attribut TYPE pour les collections¶
Dans ce cas, l’élément référencé est une variable de collection, mais comme les collections ne sont pas prises en charge, l’attribut TYPE de l’élément de référence est remplacé par le type de données VARIANT.
Oracle¶
Snowflake¶
Attribut TYPE pour les curseurs¶
Dans ce cas, l’élément référencé est une variable curseur, mais comme les curseurs REF ne sont pas pris en charge, l’attribut de l’élément de référence TYPE est remplacé par le type de données VARIANT.
Oracle¶
Snowflake¶
Note
Dans les cas où le type de données de l’élément référencé ne peut être obtenu, l’attribut TYPE de l’élément de référence est remplacé par VARIANT.
Problèmes connus¶
1. Cursors and collections declarations are not supported.¶
Les déclarations de variables de collection et de curseur n’étant pas encore prises en charge, l’attribut de l’élément de référence TYPE est remplacé par VARIANT et un avertissement est ajouté dans ces cas.
2. Original data type could not be obtained.¶
Lorsque le type de données de l’élément référencé n’a pas pu être obtenu, l’attribut TYPE de l’élément de référence est remplacé par VARIANT et un avertissement est ajouté.
EWIs connexes¶
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 actuellement pas prise en charge par l’exécution de scripts Snowflake.
SSC-EWI-0062: L’utilisation du type personnalisé a changé en variante.
SSC-EWI-OR0129: L’instruction ci-dessous a des utilisations de curseurs imbriqués.
SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake.