SnowConvert AI - Oracle - Packages intégrés¶
Référence de traduction pour les packages intégrés.
Description¶
Oracle fournit de nombreux paquets PL/SQL avec le serveur Oracle pour étendre la fonctionnalité de la base de données et fournir l’accès PL/SQL aux fonctions SQL. (Paquets intégrés Oracle Oracle PL/SQL)
DBMS_OUTPUT¶
Description¶
Le paquet
DBMS_OUTPUTest particulièrement utile pour afficher les informations de débogage PL/SQL. (Oracle PL/SQL DBMS_OUTPUT)
Procédure PUT_LINE¶
Référence de traduction pour DBMS_OUTPUT.PUT_LINE.
Description¶
Cette procédure place une ligne dans la mémoire tampon. (Oracle PL/SQL DBMSOUTPUT.PUT_LINE)
Cette UDF est mise en œuvre en utilisant une table temporaire pour insérer les données à afficher afin de répliquer la fonctionnalité de la fonction Oracle DBMS_OUTPUT.PUT_LINE.
Syntaxe¶
Procédure personnalisée¶
Données de configuration¶
Le schéma DBMS_OUTPUT doit être créé.
DBMS_OUTPUT.PUT_LINE(VARCHAR)¶
Paramètres¶
LOG : Élément d’une mémoire tampon que vous souhaitez afficher.
Note
Notez que vous utilisez une table temporaire. Si vous souhaitez que les données persistent après la fin d’une session, supprimez TEMPORARY dans CREATE TABLE.
Les tables temporaires stockent des données transitoires non permanentes. Elles n’existent que dans la session au cours de laquelle elles ont été créées et ne persistent que pour le reste de la session. Une fois la session terminée, les données stockées dans la table sont complètement supprimées du système et ne peuvent donc pas être récupérées, que ce soit par l’utilisateur qui a créé la table ou par Snowflake.
Avertissement
Si vous n’utilisez pas la table temporaire, gardez à l’esprit que vous aurez peut-être besoin d’une autre colonne dans la table où est inséré l’USER exécutant l’UDF DBMS_OUTPUT.PUT_LINE afin d’éviter toute confusion.
Exemple d’utilisation¶
Oracle¶
Résultat¶
Snowflake¶
Résultat¶
Problèmes connus¶
L’UDF restera commentée car cela peut affecter les performances. Si l’utilisateur décide de l’utiliser, il lui suffit de supprimer le commentaire du code.
L’utilisateur peut modifier l’UDF afin que les informations nécessaires soient insérées dans la table DBMS_OUTPUT.PUT_LINE.
DBMS_LOB¶
Description¶
Le paquet
DBMS_LOBfournit des sous-programmes permettant d’opérer surBLOBs,CLOBs,NCLOBs,BFILEset sur lesLOBstemporaires. Vous pouvez utiliserDBMS_LOBpour accéder et manipuler des parties spécifiques d’un LOB ou des LOBs complets. (Oracle PL/SQL DBMS_LOB)
Fonction SUBSTR¶
Translation reference for DBMS_LOB.SUBSTR.
Description¶
Cette fonction renvoie
la quantitéd’octets ou de caractères d’un LOB, à partir d’un décalage absolu `` du début du LOB. (Oracle PL/SQL DBMS_LOB.SUBSTR)
Cette fonctionnalité intégrée est remplacée par la fonction SUBSTR Snowflake. Il existe cependant quelques différences.
Note
Les paramètres amount et offset sont inversés dans Snowflake
Syntaxe¶
Surcharges de fonctions¶
DBMS_LOB.SUBSTR(“string”, amount, offset)
Exemple d’utilisation¶
Oracle¶
Résultat¶
Snowflake¶
Résultat¶
DBMS_LOB.SUBSTR(B LOB, amount, offset)¶
Exemple d’utilisation¶
Avertissement
Les valeurs de résultat dans Oracle et Snowflake sont converties d’octets en chaînes pour faciliter la compréhension de la fonction.
Pour Snowflake, vous pouvez utiliser :
hex_decode_string(to_varchar(SUBSTR(blob_column, 1, 6), “HEX”));
et pour Oracle, vous pouvez utiliser :
utl_raw.cast_to_varchar2(DBMS_LOB.SUBSTR(blob_column, 1, 6));
pour obtenir le résultat sous forme de chaîne.
Oracle¶
Résultat¶
Snowflake¶
Résultat¶
Avertissement
Remarque : UTL_RAW.CAST_TO_RAW() n’est actuellement pas transformé en TO_BINARY(). La fonction est utilisée pour montrer l’équivalence fonctionnelle de l’exemple.
DBMS_LOB.SUBSTR(CLOB, amount, offset)¶
Exemple d’utilisation¶
Oracle¶
Résultat¶
Snowflake¶
Résultat¶
Avertissement
Remarque : UTL_RAW.CAST_TO_RAW() n’est actuellement pas transformé en TO_BINARY(). La fonction est utilisée pour montrer l’équivalence fonctionnelle de l’exemple.
DBMS_LOB.SUBSTR(BFILE, amount, offset)¶
Exemple d’utilisation¶
L’utilisation de DBMS_LOB.SUBSTR() sur une colonne BFILE renvoie une sous-chaîne du contenu du fichier.
Avertissement
L’exemple suivant n’est pas une migration actuelle, mais d’un exemple fonctionnel pour montrer les différences de la fonction SUBSTR sur les types BFILE.
Contenu du fichier (file.txt) :
Oracle¶
Journal de la console¶
Snowflake¶
Les colonnes BFILE sont traduites en colonnes VARCHAR. Par conséquent, l’application d’une fonction SUBSTR à la même colonne renverrait une sous-chaîne du nom du fichier, et non de son contenu.
Résultat¶
SUBSTR(bfile_column, 1, 9) |
|---|
MY_DIR\fi |
Problèmes connus¶
1. Using DBMS_LOB.SUBSTR with BFILE columns¶
La transformation actuelle pour les types de données BFILE dans les colonnes est VARCHAR, où le nom du fichier est stocké sous forme de chaîne. Par conséquent, l’application de la fonction SUBSTR à une colonne BFILE après transformation renverra une sous-chaîne du nom du fichier, alors qu’Oracle renverrait une sous-chaîne du contenu du fichier.
EWIs connexes¶
SSC-EWI-OR0076 : Le paquet intégré n’est pas pris en charge.
SSC-FDM-OR0035 : DBMS_OUTPUT.PUTLINE vérifie la mise en œuvre de l’UDF.
UTL_FILE¶
Description¶
Avec le paquet
UTL_FILE, les programmes PL/SQL peuvent lire et écrire des fichiers texte. (Oracle PL/SQL UTL_FILE)
Procédure FCLOSE¶
Référence de traduction pour UTL_FILE.FCLOSE.
Description¶
Cette procédure ferme un fichier ouvert identifié par un gestionnaire de fichier. (Oracle PL/SQL UTL_FILE.FCLOSE)
Cette procédure est mise en œuvre en utilisant Snowflake STAGE pour stocker les fichiers texte écrits.
Syntaxe¶
Données de configuration¶
Le schéma
UTL_FILEdoit être créé.
Si vous souhaitez télécharger le fichier, exécutez la commande suivante.
Avertissement
La commande GET s’exécute dans Snowflake CLI.
Surcharges de procédures personnalisées¶
UTL_FILE.FCLOSE(VARCHAR)¶
Paramètres¶
FILE : Gestionnaire de fichier actif renvoyé par l’appel à
UTL_FILE.FOPEN
Fonctionnalité¶
Cette procédure utilise la table FOPEN_TABLES_LINES créée dans la procédure UTL_FILE.FOPEN.
Cette procédure écrit dans la zone de préparation utlfile_local_directory toutes les lignes portant le même numéro FHANDLE provenant du fichier dans FOPEN_TABLES_LINES.
Note
Notez que cette procédure utilise la zone de préparation qui a été créée précédemment. Pour l’instant, si vous voulez écrire le fichier dans une autre zone de préparation, vous devez modifier le nom.
Ces procédures sont mises en œuvre pour les zones de préparation interne dans
COPY INTO
Exemple d’utilisation¶
Oracle¶
Avertissement
Pour exécuter cet exemple, voir ORACLE UTL_FILE
Snowflake¶
Problèmes connus¶
1. Modify the procedure for changing the name of the stage.¶
L’utilisateur peut modifier la procédure s’il est nécessaire de changer le nom de la zone de préparation.
2. Location static.¶
L’emplacement utilisé pour écrire dans cette procédure est statique. Une nouvelle version de la procédure devrait accroître son extension en utilisant l’emplacement qui possède le paramètre FILE.
5. Files supported.¶
Pour l’instant, cette procédure n’écrit que les fichiers .CSV.
EWIs connexes¶
SSC-FDM-0015 : Type de données non reconnu.
SSC-FDM-OR0036 : Paramètres inutiles des paquets intégrés.
Procédure FOPEN¶
Référence de traduction pour UTL_FILE.FOPEN.
Description¶
Cette procédure ouvre un fichier. (Oracle PL/SQL UTL_FILE.FOPEN)
Cette procédure est mise en œuvre avec Snowflake STAGE pour stocker les fichiers texte.
L’utilisateur est chargé de télécharger les fichiers locaux dans STAGE afin qu’ils soient utilisés par la procédure.
Syntaxe¶
Données de configuration¶
Le schéma
UTL_FILEdoit être créé.
Créez la zone de préparation
utlfile_local_directory.
Si la valeur du paramètre
OPEN_MODEest w ou r, il est nécessaire de télécharger le fichier dans le répertoireutlfile_local_directory.
Avertissement
La commande PUT s’exécute dans Snowflake CLI.
Surcharges de procédures personnalisées¶
UTL_FILE.FOPEN(VARCHAR, VARCHAR)¶
Paramètres¶
FILENAME : Le nom du fichier, y compris l’extension**.**
OPEN\MODE : Spécifie le mode d’ouverture du fichier.
Modes ouverts¶
Le paquet intégré Oracle UTL_FILE.FOPEN prend en charge six modes d’ouverture du fichier, mais seuls trois d’entre eux sont pris en charge dans la procédure Snowscripting.
OPEN_MODE |
DESCRIPTION |
STATUS |
|---|---|---|
w |
Mode d’écriture |
Pris en charge |
a |
Mode d’ajout |
Pris en charge |
r |
Mode de lecture |
Pris en charge |
rb |
Mode de lecture d’octets |
Aucune prise en charge |
wb |
Mode d’écriture d’octets |
Aucune prise en charge |
ab |
Mode d’ajout d’octets |
Aucune prise en charge |
Fonctionnalité¶
Cette procédure utilise deux tables avec lesquelles l’opération d’ouverture d’un fichier sera émulée. La table FOPEN_TABLES contient les fichiers ouverts et la table FOPEN_TABLES_LINES contient les lignes de chaque fichier.
Si le fichier est ouvert en mode écriture, un nouveau fichier est créé, s’il est ouvert en mode lecture ou ajout, il charge les lignes du fichier dans FOPEN_TABLES_LINES et insère le fichier dans FOPEN_TABLES.
Note
Notez que cette procédure utilise la zone de préparation qui a été créée précédemment. Pour l’instant, si vous souhaitez utiliser un autre nom pour la zone de préparation, vous devez modifier la procédure.
Ces procédures sont mises en œuvre pour les zones de préparation interne dans les
COPY INTO
Exemple d’utilisation¶
Oracle¶
Avertissement
Pour exécuter cet exemple, voir ORACLE UTL_FILE
Snowflake¶
Problèmes connus¶
1. Modify the procedure for changing the name of the stage.¶
L’utilisateur peut modifier la procédure s’il est nécessaire de changer le nom de la zone de préparation.
2. LOCATION parameter is not used.¶
Le paramètre LOCATION n’est pas utilisé maintenant car la zone de préparation utilisée dans la procédure est statique. Il est prévu, dans une version actualisée de la procédure, d’accroître son extension en utilisant ce paramètre pour entrer le nom de la zone de préparation où se trouve le fichier que vous souhaitez ouvrir.
3. MAX_LINESIZE parameter is not used.¶
Le paquet intégré Oracle UTL_FILE.FOPEN comporte le paramètre MAX_LINESIZE, mais dans la procédure Snowscripting, il est supprimé car il n’est pas utilisé.
4. OPEN_MODE values supported.¶
Cette procédure prend en charge les modes write (w), read (r) et append (a) pour ouvrir les fichiers.
5. Files supported.¶
Pour l’instant, cette procédure ne prend en charge que les fichiers .CSV.
EWIs connexes¶
SSC-FDM-0015 : Type de données non reconnu.
SSC-FDM-OR0036 : UnnecessaryBuiltInPackagesParameters
Procédure PUT_LINE¶
Référence de traduction pour UTL_FILE.PUT_LINE.
Description¶
Cette procédure écrit la chaîne de texte stockée dans le paramètre tampon vers le fichier ouvert identifié par le gestionnaire du fichier. (Oracle PL/SQL UTL_FILE.PUT_LINE)
Syntaxe¶
Données de configuration¶
Le schéma
UTL_FILEdoit être créé.
UDF personnalisées¶
UTL_FILE.PUT_LINE(VARCHAR, VARCHAR)¶
Paramètres¶
FILE : Gestionnaire de fichier actif renvoyé par l’appel à
UTL_FILE.FOPENBUFFER : Tampon de texte qui contient le texte à écrire dans le fichier**.**
Fonctionnalité¶
Cette procédure utilise la table FOPEN_TABLES_LINES créée dans la procédure UTL_FILE.FOPEN.
Si OPEN_MODE du fichier est write (w) ou append (a), le tampon est inséré dans FOPEN_TABLES_LINES, mais si OPEN_MODE est read (r), l’exception File_is_read_only est levée.
Avertissement
Remarque :
Pour utiliser cette procédure, vous devez ouvrir le fichier avec UTL_FILE.FOPEN
Exemple d’utilisation¶
Oracle¶
Avertissement
Pour exécuter cet exemple, voir ORACLE UTL_FILE
Snowflake¶
Problèmes connus¶
1. AUTOFLUSH parameter is not used.¶
Le paquet intégré Oracle UTL_FILE.PUT_LINE contient le paramètre AUTOFLUSH, mais dans la procédure Snowscripting, il est supprimé car il n’est pas utilisé.
EWIs connexes¶
SSC-FDM-0015 : Type de données non reconnu.
SSC-FDM-OR0036: Paramètres de packages intégrés inutiles.
DBMS_RANDOM¶
Description¶
Le paquet
DBMS_RANDOMfournit un générateur de nombres aléatoires intégré.DBMS_RANDOMn’est pas destiné à la cryptographie. (Oracle PL/SQL DBMS_RANDOM)
Fonctions VALUE¶
Référence de traduction pour DBMS_RANDOM.VALUE.
Description¶
La fonction de base permet d’obtenir un nombre aléatoire, supérieur ou égal à 0 et inférieur à 1. Vous pouvez également obtenir un nombre Oracle aléatoire
X, oùXest supérieur ou égal àlowet inférieur àhigh. (Oracle PL/SQL DBMS_RANDOM.VALUE)
Cette UDF est implémentée en utilisant la fonction Math.random de Javascript pour répliquer la fonctionnalité de la fonction Oracle DBMS_RANDOM.VALUE.
Syntaxe¶
Surcharges UDF personnalisées¶
Données de configuration¶
Le schéma DBMS_RANDOM doit être créé.
DBMS_RANDOM.VALUE()¶
Paramètres¶
Aucun paramètre.
Note
Remarque : L’UDF ne prend en charge qu’approximativement entre 9 et 10 chiffres dans la partie décimale du nombre (9 ou 10 chiffres de précision)
Exemple d’utilisation¶
Oracle¶
Résultat¶
Note
La fonction peut être appelée_DBMS_RANDOM.VALUE()_ ou DBMS_RANDOM.VALUE.
Snowflake¶
Résultat¶
Note
Dans Snowflake, vous devez mettre les parenthèses.
DBMS_RANDOM.VALUE(NUMBER, NUMBER)
Paramètres¶
low : Le plus petit
NUMBERà partir duquel un nombre aléatoire est généré. Le nombre généré est supérieur ou égal àlow.high : Le plus haut
NUMBERutilisé comme limite lors de la génération d’un nombre aléatoire. Le nombre généré sera inférieur àhigh.
Note
La fonction Oracle DBMS_RANDOM.VALUE(low, high) n’exige pas que les paramètres aient un ordre spécifique. L’UDF Snowflake est donc mise en œuvre pour prendre en charge cette fonction en retirant toujours le nombre le plus élevé et le plus bas.
L’UDF ne prend en charge qu’approximativement entre 9 et 10 chiffres dans la partie décimale du nombre (9 ou 10 chiffres de précision).
Exemple d’utilisation¶
Oracle¶
Résultat¶
Snowflake¶
Résultat¶
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-FDM-OR0033 : DBMS\RANDOM.VALUE La précision des paquets intégrés est plus faible dans Snowflake.