SnowConvert : questions relatives à Oracle¶
SSC-EWI-OR0001¶
Description¶
Cette erreur se produit lorsque la valeur de l’instruction START WITH
est définie sur LIMIT VALUE
.
Dans Oracle, cette clause n’est utilisée qu’avec l’instruction ALTER TABLE.
L’option START WITH LIMIT VALUE
, qui n’est disponible que pour identity_options
, ne peut être utilisée qu’avec la commande ALTER TABLE MODIFY
. Lorsque vous utilisez START WITH LIMIT VALUE
, la base de données d’Oracle va :
Verrouiller la table
Trouver :
La valeur maximale de la colonne d’identité (pour les séquences croissantes)
La valeur minimale de la colonne d’identité (pour les séquences décroissantes)
Cet ensemble de valeurs constitue le filigrane haut du générateur de séquence
Calculez la valeur de la séquence suivante par :
Pour les séquences croissantes : filigrane haut +
INCREMENT BY entier
Pour les séquences décroissantes : filigrane haut -
INCREMENT BY entier
ALTER TABLE ORACLE¶
Exemple de code¶
Code d’entrée :¶
CREATE SEQUENCE SEQUENCE1
START WITH LIMIT VALUE;
Code de sortie :¶
CREATE OR REPLACE SEQUENCE SEQUENCE1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0001 - SEQUENCE START VALUE WITH 'LIMIT VALUE' IS NOT SUPPORTED BY SNOWFLAKE. ***/!!!
START WITH LIMIT VALUE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}';
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0050¶
Gravité¶
Medium
Description¶
Cette erreur se produit lorsque l’on tente d’extraire une valeur qui dépasse la plage autorisée. Cela signifie que la valeur de précision n’est pas prise en charge par Snowflake, ce qui entraîne le commentaire du code et l’ajout de ce message.
Exemple de code :¶
Code d’entrée :¶
SELECT CAST('123,456E+40' AS NUMBER, '999,999EEE') FROM DUAL;
SELECT CAST('12.34567891234567891234567891234567891267+' AS NUMBER, '99.999999999999999999999999999999999999S') FROM DUAL;
SELECT CAST('12.34567891234567891234567891234567891267' AS NUMBER, '99.999999999999999999999999999999999999') FROM DUAL;
select cast(' 1.0E+123' as number, '9.9EEEE') from dual;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE '123,456E+40' ***/!!!
CAST('123,456E+40' AS NUMBER(38, 18) , '999,999EEE') FROM DUAL;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE '12.34567891234567891234567891234567891267+' ***/!!! CAST('12.34567891234567891234567891234567891267+' AS NUMBER(38, 18) , '99.999999999999999999999999999999999999S') FROM DUAL;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE '12.34567891234567891234567891234567891267' ***/!!! CAST('12.34567891234567891234567891234567891267' AS NUMBER(38, 18) , '99.999999999999999999999999999999999999') FROM DUAL;
select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE ' 1.0E+123' ***/!!! cast(' 1.0E+123' as NUMBER(38, 18) , '9.9EEEE') from dual;
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0110¶
Certaines parties du code ont été supprimées pour en faciliter la compréhension.
Sévérité ¶
Élevé
Description ¶
Il n’existe pas d’équivalent direct de la clause FOR UPDATE
dans le langage Snowflake. L’outil ajoutera un message d’erreur, d’avertissement ou d’information (EWI) et commentera cette clause pendant la conversion.
Exemple de code ¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE for_update_clause
AS
update_record f_employee%rowtype;
CURSOR c1 IS SELECT * FROM f_employee FOR UPDATE OF employee_number nowait;
BEGIN
FOR CREC IN C1 LOOP
UPDATE f_employee SET employee_number = employee_number + 1000 WHERE CURRENT OF c1;
IF crec.id = 2 THEN
DELETE FROM f_employee WHERE CURRENT OF c1;
EXIT;
END IF;
END LOOP;
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE for_update_clause ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
update_record OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
c1 CURSOR
FOR
SELECT * FROM
f_employee
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0110 - FOR UPDATE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FOR UPDATE OF employee_number nowait;
BEGIN
OPEN C1;
--** SSC-PRF-0004 - THIS STATEMENT HAS USAGES OF CURSOR FOR LOOP **
FOR CREC IN C1 DO
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0136 - CURRENT OF CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
UPDATE f_employee
SET employee_number =
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!! employee_number + 1000 WHERE CURRENT OF c1;
IF (crec.id = 2) THEN
-- !!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'CURRENT OF' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
-- DELETE FROM
-- f_employee
-- WHERE CURRENT OF c1
;
EXIT;
END IF;
END FOR;
CLOSE C1;
END;
$$;
Recommandations¶
Traitez les mises à jour de colonnes dans les requêtes
UPDATE/DELETE
. Pour de plus amples informations, veuillez vous référer au code d’erreur SSC-EWI-0075.Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0035¶
Certaines parties du code de sortie ont été supprimées pour en faciliter la compréhension.
Gravité¶
Medium
Description¶
La fonction TABLE ne peut pas être utilisée dans Snowflake lors de la création d’une collection d’expressions. Cette fonctionnalité n’est pas prise en charge actuellement.
Exemple de code¶
Code d’entrée :¶
SELECT
TABLE2.COLUMN_VALUES
FROM TABLE1 i, TABLE(i.groups) TABLE2;
Code de sortie :¶
// SnowConvert Helpers Code section is omitted.
SELECT
TABLE2.COLUMN_VALUES
FROM
TABLE1 i,
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0035 - TABLE FUNCTION IS NOT SUPPORTED WHEN IT IS USED AS A COLLECTION OF EXPRESSIONS ***/!!! TABLE(i.groups) TABLE2;
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0097¶
Gravité¶
Faible
Description¶
Les propriétés supplémentaires d’Oracle dans les instructions CREATE PROCEDURE
ne sont pas prises par la syntaxe CREATE PROCEDURE
de Snowflake et peuvent être omises en toute sécurité lors de la migration.
Exemple de code¶
Code d’entrée Oracle :¶
CREATE OR REPLACE PROCEDURE PROC01
DEFAULT COLLATION USING_NLS_COMP
AUTHID CURRENT_USER
ACCESSIBLE BY (PROCEDURE PROC03)
AS
BEGIN
NULL;
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE PROC01 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0097 - PROCEDURE PROPERTIES ARE NOT SUPPORTED IN SNOWFLAKE PROCEDURES ***/!!!
AS
$$
BEGIN
NULL;
END;
$$;
Recommandations¶
Aucune action n’est requise de la part des utilisateurs.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0087¶
Gravité¶
Faible
Certaines parties du code ont été omises pour que l’exemple reste clair et concis.
Description¶
Cette erreur se produit en cas de problème de conversion de la syntaxe de jointure externe d’Oracle utilisant l’opérateur (+) dans les clauses ANSI JOIN. Plus précisément, cela se produit lorsque la requête originale contient des références de tables circulaires dans la clause WHERE, où les tables sont jointes selon un modèle cyclique.
Lorsque cet EWI s’affiche, les opérations JOIN risquent d’échouer parce qu’elles ne se déroulent pas dans la bonne séquence.
Exemple de code¶
Code d’entrée Oracle :¶
SELECT
l.location_id, l.state_province,
r.region_id, r.region_name,
c.country_id, c.country_name
FROM
hr.countries c, hr.regions r, hr.locations l, hr.departments d WHERE
l.location_id (+) = c.region_id AND
c.region_id (+) = r.region_id AND
r.region_id (+) = c.region_id AND
l.location_id (+) = d.location_id;
Code de sortie :¶
SELECT
l.location_id, l.state_province,
r.region_id, r.region_name,
c.country_id, c.country_name
FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0087 - ORDERING THE OUTER JOINS FAILED. QUERY MAY NOT BEHAVE CORRECTLY ***/!!!
hr.departments d
LEFT OUTER JOIN
hr.locations l
ON
l.location_id = c.region_id
AND
l.location_id = d.location_id
LEFT OUTER JOIN
hr.countries c
ON
c.region_id = r.region_id
LEFT OUTER JOIN
hr.regions r
ON
r.region_id = c.region_id;
Vérifiez que votre requête est syntaxiquement correcte et que vous ne joignez pas inutilement des tables entre elles.
Si le problème persiste, spécifiez le nom de la table pour chaque colonne dans la clause WHERE (par exemple, utilisez
table1.column_name
au lieu decolumn_name
).Pour toute assitance supplémentaire, contactez notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0100¶
Gravité¶
Faible
Description¶
Le site FOR LOOP
d’Oracle peut comporter plusieurs conditions, mais FOR LOOP
de Snowflake Scripting ne prend en charge qu’une seule condition. Lors de la conversion d’Oracle vers Snowflake, seule la première condition sera migrée, et toute condition supplémentaire sera ignorée.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE P3
AS
BEGIN
FOR i IN REVERSE 1..3,
REVERSE i+5..i+7
LOOP
NULL;
END LOOP;
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE P3 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0100 - FOR LOOP WITH MULTIPLE CONDITIONS IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN REVERSE 1 TO 3 LOOP
NULL;
END LOOP;
END;
$$;
Recommandations¶
Décomposez les instructions
FOR LOOP
complexes en plusieurs boucles plus simples ou réécrivez la condition de la boucle pour la rendre plus claire.Pour toute assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0011¶
Gravité¶
Medium
Description¶
La fonction Cast de Snowflake ne prend pas en charge le paramètre de format lors de l’utilisation de « MONTH » ou « DAY » dans les formats DATE ou TIMESTAMP.
"MONTH/DD/YYYY" or "MM/DAY/YY" ...
Lorsque vous utilisez la fonction CAST avec le type de données NUMBER dans Snowflake, vous devez spécifier quatre arguments pour afficher correctement les valeurs décimales. Actuellement, le code de sortie ne fournit pas tous les arguments requis pour la fonction TO_NUMBER. Vous devrez ajouter manuellement les arguments manquants pour assurer un formatage décimal correct.
Exemple de code¶
Code d’entrée :¶
SELECT CAST('12.48' AS NUMBER, '99.99') FROM DUAL;
Code de sortie :¶
SELECT
TO_NUMBER('12.48', '99.99', 38, 2)
FROM DUAL;
Code d’entrée :¶
SELECT CAST('FEBRUARY/18/24' as DATE, 'MONTH/DD/YY') FROM DUAL;
SELECT CAST('FEB/MON/24' as DATE, 'MON/DAY/YY') FROM DUAL;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0011 - THE FORMAT PARAMETER 'MONTH/DD/YY' IS NOT SUPPORTED ***/!!!
TO_TIMESTAMP ('FEBRUARY/18/24' , 'MONTH/DD/YY')
FROM DUAL;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0011 - THE FORMAT PARAMETER 'MON/DAY/YY' IS NOT SUPPORTED ***/!!!
TO_TIMESTAMP ('FEB/MON/24' , 'MON/DAY/YY')
FROM DUAL;
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0031¶
Gravité¶
Faible
Description¶
Cette erreur se produit lorsque vous utilisez un paramètre non pris en charge dans la fonction SYS_CONTEXT. Snowflake propose des fonctions contextuelles similaires que vous pouvez utiliser à la place. Pour plus d’informations sur les fonctions contextuelles prises en charge, consultez la documentation de Snowflake.
Exemple de code¶
Code d’entrée :¶
SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0031 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE ***/!!!
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Recommandations¶
La fonction est convertie en modèle de fonction définie par l’utilisateur (UDF) que vous pouvez personnaliser pour répliquer le comportement du paramètre SYS_CONTEXT.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0005¶
Cet EWI n’est plus utilisé. Veuillez consulter SSC-FDM-OR0043 pour la documentation actuelle.
Gravité¶
Faible
Description¶
Cette erreur se produit lors de la conversion d’une fonction TO_CLOB en TO_VARCHAR. Lorsque vous travaillez avec les paramètres BFILE ou BLOB, il se peut que vous deviez spécifier un paramètre de format pour une conversion correcte.
Exemple de code¶
Code d’entrée :¶
SELECT TO_CLOB('Lorem ipsum dolor sit amet') FROM DUAL;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0005 - BFILE/BLOB PARAMETERS ARE CONSIDERED BINARY, FORMAT MAY BE NEEDED ***/!!!
TO_VARCHAR('Lorem ipsum dolor sit amet')
FROM DUAL;
Recommandations¶
Vérifiez que les résultats de la sortie correspondent entre le code source et le code converti. Ajoutez un paramètre de format si nécessaire.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0104¶
Gravité¶
Élevé
Description¶
Les collections Oracle ne sont actuellement pas prises en charge par SnowConvert. Toutes les variables utilisant des types de collection et leurs opérations associées seront commentées dans le code converti.
Générez des procédures et des macros dans JavaScript en ajoutant l’indicateur -t JavaScript
ou --PLTargetLanguage JavaScript
à votre commande.
Exemple de code¶
Code d’entrée Oracle :¶
-- Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE collection_variable_sample_proc
IS
TYPE POPULATION IS TABLE OF NUMBER INDEX BY VARCHAR2(64); --Associative array
city_population POPULATION := POPULATION();
i VARCHAR2(64);
BEGIN
city_population('Smallville') := 2000;
city_population('Midland') := 750000;
i := city_population.FIRST;
i := city_population.NEXT(1);
END;
Sortie Cod¶
CREATE OR REPLACE PROCEDURE collection_variable_sample_proc ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0072 - PROCEDURAL MEMBER TYPE DEFINITION NOT SUPPORTED. ***/!!!
/* TYPE POPULATION IS TABLE OF NUMBER INDEX BY VARCHAR2(64) */
;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
/* city_population POPULATION := POPULATION() */
;
let I;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
/* city_population('Smallville') := 2000 */
;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
/* city_population('Midland') := 750000 */
;
I =
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
/*city_population.FIRST*/
null;
I =
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
/*city_population.NEXT(1)*/
null;
$$;
Recommandations¶
Aucune action n’est requise de la part des utilisateurs.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0070¶
Gravité¶
Medium
Certaines parties du code ont été supprimées pour rendre l’exemple plus clair et plus facile à comprendre.
Description¶
Une opération binaire ne peut pas être convertie directement. Pour résoudre ce problème, nous avons ajouté une fonction définie par l’utilisateur.
Exemple de code¶
Oracle :¶
-- Unsupported operation: EXCEPT DISTINCT
SELECT someValue MULTISET EXCEPT DISTINCT multiset_except FROM customers_demo;
Snowflake Scripting:¶
-- Unsupported operation: EXCEPT DISTINCT
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0070 - BINARY OPERATION MULTISET EXCEPT IS NOT SUPPORTED ***/!!!
someValue MULTISET EXCEPT DISTINCT multiset_except FROM
customers_demo;
Recommandations¶
Aucune action n’est requise de la part des utilisateurs finaux.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0030¶
Gravité¶
Medium
Description¶
L’erreur indique que la clause KEEP FIRST ou KEEP LAST, qui est utilisée pour sélectionner uniquement les premières ou les dernières valeurs lors de l’utilisation de fonctions d’agrégation, n’est pas prise en charge actuellement.
Exemple de code¶
Code d’entrée :¶
SELECT
department_id,
MIN(salary) KEEP (
DENSE_RANK FIRST
ORDER BY
commission_pct
) "Worst"
FROM
employees;
Code de sortie :¶
SELECT
department_id,
MIN(salary)
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0030 - KEEP STATEMENT USED IN THE AGGREGATE FUNCTION IS NOT SUPPORTED ***/!!!
KEEP (
DENSE_RANK FIRST
ORDER BY
commission_pct
) "Worst"
FROM
employees;
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0121¶
Gravité¶
Medium
Description¶
Lors de la migration des colonnes Oracle BFILE vers Snowflake, elles sont converties en colonnes VARCHAR qui stockent le nom du fichier sous forme de chaîne. Cela signifie que l’utilisation de la fonction SUBSTR dans Snowflake sur ces colonnes migrées opérera sur le nom du fichier lui-même, et non sur son contenu. Cette fonction diffère de la fonction Oracle DBMS_LOB.SUBSTR, qui opère sur le contenu réel du fichier. Pour plus de détails, voir BFILE data type.
Exemple de code¶
Code d’entrée :¶
CREATE TABLE table1
(
bfile_column BFILE
)
SELECT
DBMS_LOB.SUBSTR(bfile_column, 15, 1)
FROM table1;
Code de sortie :¶
CREATE OR REPLACE TABLE table1
(
bfile_column
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0105 - ADDITIONAL WORK IS NEEDED FOR BFILE COLUMN USAGE. BUILD_STAGE_FILE_URL FUNCTION IS A RECOMMENDED WORKAROUND ***/!!!
VARCHAR
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0121 - USING DBMS_LOB.SUBSTR ON BFILE SOURCE COLUMN IS NOT SUPPORTED ON SNOWFLAKE ***/!!!
SUBSTR(bfile_column, 1, 15)
FROM
table1;
Recommandations¶
Apprenez à gérer les fichiers dans Snowflake en consultant la documentation ici.
Pour toute assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0092¶
Gravité¶
Faible
Description¶
Ce message apparaît lorsque l’on tente d’utiliser une échelle négative avec un type de données NUMBER à des fins d’arrondi. Snowflake ne prenant pas en charge les échelles négatives, le paramètre d’échelle a été supprimé de la conversion.
Exemple de code¶
Code d’entrée Oracle :¶
CREATE TABLE number_table
(
col1 NUMBER(38),
col2 NUMBER(38, -1),
col3 NUMBER(*, -2)
);
INSERT INTO number_table(col1, col2, col3) VALUES (555, 555, 555);
SELECT * FROM number_table;
COL1|COL2|COL3|
-+-+-+
555| 560| 600|
Code de sortie :¶
CREATE OR REPLACE TABLE number_table
(
col1 NUMBER(38) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
col2 NUMBER(38) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0092 - NUMBER DATATYPE NEGATIVE SCALE WAS REMOVED FROM OUTPUT ***/!!! /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
col3 NUMBER(38) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0092 - NUMBER DATATYPE NEGATIVE SCALE WAS REMOVED FROM OUTPUT ***/!!! /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
INSERT INTO number_table(col1, col2, col3) VALUES (555, 555, 555);
SELECT * FROM
number_table;
|COL1|COL2|COL3|
|-|-|-|
|555 |555 |555 |
Recommandations¶
Aucune action n’est requise de la part des utilisateurs.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0004¶
Certaines parties du code ont été supprimées pour rendre l’exemple plus clair et plus facile à comprendre.
Description¶
Cet avertissement apparaît lorsqu’une instruction SELECT contient une clause que Snowflake ne prend pas en charge. Les clauses suivantes ne sont pas supportées par Snowflake :
Objets conteneurs qui stockent des données
Structures de données hiérarchiques pour l’organisation de l’information
Modifications externes des sources de données
Partitions ou segments de données
Exemple de code¶
Code d’entrée :¶
SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
Code de sortie :¶
SELECT * FROM
TABLE1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0004 - THE 'OPTIONAL MODIFIED EXTERNAL' SYNTAX IN SELECT IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0014¶
Certaines parties du code de sortie ont été supprimées pour rendre l’exemple plus clair et plus facile à suivre.
Gravité¶
Medium
Description¶
La fonction NLSSORT ne peut pas être utilisée dans l’instruction SELECT pour le moment.
Exemple de code¶
Code d’entrée :¶
SELECT NLSSORT(name, 'NLS_SORT = ENGLISH') FROM products;
Code de sortie :¶
// SnowConvert Helpers Code section is omitted.
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0014 - FUNCTION NLSSORT IS NOT SUPPORTED ***/!!!
NLSSORT(name, 'NLS_SORT = ENGLISH') FROM
products;
Recommandations¶
NLSSORT est transformée en une fonction définie par l’utilisateur (UDF/Stub), que vous pouvez personnaliser pour répliquer son comportement.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0105¶
Gravité¶
Faible
Description¶
Le type de données BFILE
est converti en VARCHAR
lors de la migration. Cette conversion permet le stockage du chemin et du nom du fichier. Notez que les fonctions intégrées d’Oracle pour la gestion des types BFILE ne sont pas prises en charge actuellement. Pour plus de détails sur la gestion des chemins et des noms de fichiers, veuillez vous référer à la documentation de BFILENAME_UDF
.
La fonction BUILD_STAGE_FILE_URL
offre un moyen sûr d’accéder aux fichiers stockés dans les zones de préparation Snowflake. Lorsqu’elle est appelée, elle génère une URL qui pointe vers un fichier spécifique dans une zone de préparation interne. Pour plus de détails, reportez-vous à la documentation de la fonction ici.
Exemple de code¶
Code d’entrée Oracle :¶
CREATE TABLE bfiletable ( bfile_column BFILE );
INSERT INTO bfiletable VALUES ( BFILENAME('mydirectory', 'myfile.png') );
Code de sortie :¶
CREATE OR REPLACE TABLE bfiletable ( bfile_column
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0105 - ADDITIONAL WORK IS NEEDED FOR BFILE COLUMN USAGE. BUILD_STAGE_FILE_URL FUNCTION IS A RECOMMENDED WORKAROUND ***/!!!
VARCHAR
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
INSERT INTO bfiletable
VALUES (PUBLIC.BFILENAME_UDF('mydirectory', 'myfile.png') );
Recommandations¶
Utilisez la fonction
BUILD_STAGE_FILE_URL
et d’autres fonctions de fichier pour gérer et manipuler des fichiers dans Snowflake.
CREATE OR REPLACE TABLE bfiletable ( bfile_column
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0105 - ADDITIONAL WORK IS NEEDED FOR BFILE COLUMN USAGE. BUILD_STAGE_FILE_URL FUNCTION IS A RECOMMENDED WORKAROUND ***/!!!
VARCHAR
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
INSERT INTO bfiletable
VALUES (PUBLIC.BFILENAME_UDF('mydirectory', 'myfile.png') );
URL |
+
https://thecompany.snowflakecomputing.com/api/files/CODETEST/PUBLIC/MY_STAGE/%2Fmydirectory%2Fmyfile.jpg|
Cette fonction est compatible avec divers fournisseurs de stockage Cloud. Pour des informations sur l’utilisation de fichiers de votre système local avec des zones de préparation, veuillez vous référer à cette documentation.
Convertissez le type de données en un type compatible avec le système cible.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0045¶
Gravité¶
Medium
Description¶
Ce message apparaît lors d’une tentative d’utilisation de FML ou d’un casting au format L, qui n’est pas disponible dans Snowflake. Dans de tels cas, le code est commenté et ce message d’avertissement s’affiche.
Exemple de code :¶
Code d’entrée :¶
SELECT CAST(' $123.45' as number, 'L999.99') FROM DUAL;
SELECT CAST('$123.45' as number, 'FML999.99') FROM DUAL;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0045 - CAST TYPE L AND FML NOT SUPPORTED ***/!!!
CAST(' $123.45' as NUMBER(38, 18) , 'L999.99') FROM DUAL;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0045 - CAST TYPE L AND FML NOT SUPPORTED ***/!!! CAST('$123.45' as NUMBER(38, 18) , 'FML999.99') FROM DUAL;
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0082¶
Certaines parties du code de sortie ont été supprimées pour rendre l’exemple plus clair et plus facile à suivre.
Gravité¶
Medium
Description¶
Cette erreur se produit lorsqu’une requête tente d’accéder à un attribut dans une colonne qui a été définie comme un type personnalisé. Bien que la conversion automatique ne soit pas possible, vous pouvez facilement convertir ces requêtes manuellement.
Exemple de code :¶
Code d’entrée Oracle :¶
CREATE TYPE type1 AS OBJECT (
attribute1 VARCHAR2(20),
attribute2 NUMBER
);
CREATE TYPE type2 AS OBJECT (
property1 type1,
property2 DATE
);
CREATE TABLE my_table (
id NUMBER PRIMARY KEY,
column1 type2
);
INSERT INTO my_table VALUES (
1, type2(type1('value1', 100), SYSDATE)
);
SELECT column1.property1.attribute1, column1.property2
FROM my_table;
Code de sortie :¶
!!!RESOLVE EWI!!! /*** SSC-EWI-0056 - CUSTOM TYPES ARE NOT SUPPORTED IN SNOWFLAKE BUT REFERENCES TO THIS CUSTOM TYPE WERE CHANGED TO VARIANT ***/!!!
CREATE TYPE type1 AS OBJECT (
attribute1 VARCHAR2(20),
attribute2 NUMBER
)
;
!!!RESOLVE EWI!!! /*** SSC-EWI-0056 - CUSTOM TYPES ARE NOT SUPPORTED IN SNOWFLAKE BUT REFERENCES TO THIS CUSTOM TYPE WERE CHANGED TO VARIANT ***/!!!
CREATE TYPE type2 AS OBJECT (
property1 type1,
property2 DATE
)
;
CREATE OR REPLACE TABLE my_table (
id NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/ PRIMARY KEY,
column1 VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'type2' USAGE CHANGED TO VARIANT ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
CREATE OR REPLACE VIEW PUBLIC.my_table_view
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "" }}'
AS
SELECT
id,
column1:property1:attribute1 :: VARCHAR AS attribute1,
column1:property1:attribute2 :: NUMBER AS attribute2,
column1:property2 :: DATE AS property2
FROM
my_table;
INSERT INTO my_table
VALUES (
1, type2(type1('value1', 100) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'type1' NODE ***/!!!, CURRENT_TIMESTAMP()) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'type2' NODE ***/!!!
);
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0082 - CANNOT CONVERT NESTED TYPE ATTRIBUTE EXPRESSION ***/!!! column1.property1.attribute1,
column1.property2
FROM
my_table;
Recommandations¶
Pour corriger le code manuellement, remplacez l’opérateur “.” (point) par “:” (deux points) lors de l’accès aux colonnes de type.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0071¶
Gravité¶
Faible
Description¶
L’utilisation du quantificateur « all » n’est pas pris en charge par Snowflake. Lors de la conversion de votre code, ce modificateur sera supprimé et un message d’avertissement sera généré. Veuillez noter que cette modification peut entraîner un comportement inattendu dans votre code.
Exemple de code¶
Code d’entrée :¶
SELECT location_id FROM locations
MINUS ALL
SELECT location_id FROM departments;
Code de sortie :¶
SELECT location_id FROM
locations
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0071 - QUANTIFIER 'ALL' NOT SUPPORTED FOR THIS SET OPERATOR, RESULTS MAY DIFFER ***/!!!
MINUS
SELECT location_id FROM
departments;
Dans Snowflake, les opérateurs INTERSECT et MINUS/EXCEPT éliminent automatiquement les valeurs en double du jeu de résultats.
Recommandations¶
Vérifiez les fonctions alternatives dans Snowflake pour répliquer la fonctionnalité du quantificateur « all ». Voici comment contourner les limites des opérations MINUS ALL
et EXCEPT ALL
.
SELECT location_id FROM
(
SELECT location_id, ROW_NUMBER()OVER(PARTITION BY location_id ORDER BY 1) rn
FROM locations
MINUS
SELECT number_val, ROW_NUMBER()OVER(PARTITION BY location_id ORDER BY 1) rn
FROM departments
);
Pour obtenir une assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0020¶
Gravité¶
Modéré
Description¶
L’implémentation de cette fonction par Snowflake n’accepte pas les valeurs négatives, ce qui se traduira par un comportement différent par rapport à la base de données source lors de l’exécution.
Exemple de code¶
Code d’entrée :¶
SELECT INSTR('CORPORATE FLOOR','OR', -3, 2) FROM DUAL;
Code de sortie :¶
SELECT
REGEXP_INSTR('CORPORATE FLOOR','OR', -3, 2) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0020 - NEGATIVE VALUES NOT SUPPORTED FOR FUNCTION ***/!!! FROM DUAL;
Recommandations¶
Créez une fonction définie par l’utilisateur (UDF) capable de traiter des valeurs négatives comme paramètres d’entrée ou d’explorer des solutions alternatives.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0051¶
Gravité¶
Faible
Description¶
Cet avertissement apparaît lorsqu’une fonction PRAGMA EXCEPTION_INIT est utilisée dans une procédure. Dans le code original, les noms d’exception et les codes SQL sont définis à l’aide de la fonction RAISE. Lors de la conversion vers Snowflake Scripting, ces codes SQL sont inclus dans la déclaration d’exception. Cependant, certaines de ces valeurs de code SQL peuvent ne pas être compatibles avec Snowflake Scripting.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_SAMPLE AUTHID DEFINER IS
NEW_EXCEPTION EXCEPTION;
PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
NEW_EXCEPTION2 EXCEPTION;
PRAGMA EXCEPTION_INIT ( NEW_EXCEPTION2, -20100 );
BEGIN
IF true THEN
RAISE NEW_EXCEPTION;
END IF;
EXCEPTION
WHEN NEW_EXCEPTION THEN
--Handle Exceptions
NULL;
END;
/
Code de sortie :¶
Script Snowflake¶
CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_SAMPLE ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0099 - EXCEPTION CODE NUMBER EXCEEDS SNOWFLAKE SCRIPTING LIMITS ***/!!!
NEW_EXCEPTION EXCEPTION;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED ***/!!!
PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
NEW_EXCEPTION2 EXCEPTION (-20100, '');
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED ***/!!!
PRAGMA EXCEPTION_INIT ( NEW_EXCEPTION2, -20100 );
BEGIN
IF (true) THEN
RAISE NEW_EXCEPTION;
END IF;
EXCEPTION
WHEN NEW_EXCEPTION THEN
--Handle Exceptions
NULL;
END;
$$;
Recommandations¶
Aucune action n’est requise de la part des utilisateurs.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0075¶
Gravité¶
Medium
Certaines parties du code ont été supprimées pour rendre l’exemple plus clair et plus facile à comprendre.
Générez des procédures et des macros dans JavaScript en ajoutant l’indicateur -t JavaScript
ou --PLTargetLanguage JavaScript
à votre commande.
Description¶
Les étiquettes des blocs de code ne peuvent pas être utilisées comme références dans les instructions.
Exemple de code¶
Oracle :¶
--Additional Params: -t JavaScript
CREATE OR REPLACE EDITIONABLE PROCEDURE PROCEDURE1
IS
BEGIN
-- procedure body
EXIT loop_b;
-- procedure body continuation
END;
Snowflake Scripting:¶
--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
/* ** SSC-EWI-OR0075 - LABELS IN STATEMENTS ARE NOT SUPPORTED. ** */
/* -- procedure body
EXIT loop_b */
// procedure body
;
// procedure body continuation
;
$$;
Recommandations¶
Aucune action n’est requise de la part des utilisateurs finaux.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0135¶
Gravité¶
Faible
Description¶
Lors de l’exécution d’une requête Time Travel dans Snowflake, il se peut que vous ne receviez aucun résultat si vous spécifiez une période qui se situe en dehors de la période de conservation des données. Pour plus d’informations, veuillez vous référer à Time Travel de Snowflakel.
Exemple de code¶
Code d’entrée¶
SELECT * FROM employees
AS OF TIMESTAMP
TO_TIMESTAMP('2023-09-27 07:00:00', 'YYYY-MM-DD HH:MI:SS')
WHERE last_name = 'SampleName';
Code de sortie¶
SELECT * FROM
employees
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0135 - DATA RETENTION PERIOD MAY PRODUCE NO RESULTS ***/!!!
AT (TIMESTAMP =>
TO_TIMESTAMP('2023-09-27 07:00:00', 'YYYY-MM-DD HH:MI:SS'))
WHERE last_name = 'SampleName';
Recommandations¶
Pour obtenir une assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0101¶
Gravité¶
Faible
Description¶
FOR LOOP
d’Oracle prend en charge des clauses supplémentaires qui ne sont pas disponibles dans Snowflake Scripting. Il s’agit notamment des éléments suivants :
Clause BY : contrôle la taille du pas du compteur de la boucle
Clause WHILE : ajoute une condition booléenne pour poursuivre la boucle
Clause WHEN : ajoute une condition booléenne pour poursuivre la boucle
Lors de la transformation du code Oracle en code Snowflake, ces clauses sont ignorées car elles ne sont pas prises en charge par Snowflake Scripting.
Exemple de code¶
Code d’entrée Oracle :¶
CREATE OR REPLACE PROCEDURE P2
AS
BEGIN
FOR i IN 1..10 WHILE i <= 5 LOOP
NULL;
END LOOP;
FOR i IN 5..15 BY 5 LOOP
NULL;
END LOOP;
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE P2 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "WHILE" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN 1 TO 10 LOOP
NULL;
END LOOP;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "BY" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN 5 TO 15 LOOP
NULL;
END LOOP;
END;
$$;
Recommandations¶
Décomposez les instructions
FOR LOOP
complexes en plusieurs boucles plus simples ou réécrivez la condition de la boucle pour la rendre plus claire.Pour toute assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0010¶
Certaines parties du code ont été supprimées pour rendre l’exemple plus clair et plus facile à comprendre.
Gravité¶
Critique
Description¶
Cet avertissement apparaît lorsque les clauses PARTITION
et SUBPARTITION
sont utilisées dans une requête. Snowflake gère automatiquement la partition des données, ces clauses ne sont donc pas nécessaires.
Exemple de code¶
Code d’entrée :¶
SELECT * FROM table1 PARTITION(col1);
Code de sortie :¶
SELECT * FROM
table1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0010 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE. IT REQUIRES MANUAL FIX ***/!!!
PARTITION(col1);
Recommandations¶
Pour obtenir une fonctionnalité similaire dans Snowflake, vous devez ajouter manuellement une clause
WHERE
pour filtrer des lignes de partition spécifiques. Notez que cette solution de contournement peut avoir un impact sur les performances des requêtes.Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0099¶
Gravité¶
Faible
Description¶
Cette erreur se produit lorsque le numéro de la déclaration d’exception se situe en dehors de la plage autorisée pour Snowflake Scripting. Les numéros d’exception doivent être des entiers compris entre -20000 et -20999.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE procedure_exception
IS
my_exception EXCEPTION;
PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
BEGIN
NULL;
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE procedure_exception ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0099 - EXCEPTION CODE NUMBER EXCEEDS SNOWFLAKE SCRIPTING LIMITS ***/!!!
my_exception EXCEPTION;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED ***/!!!
PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
BEGIN
NULL;
END;
$$;
Recommandations¶
Vérifiez que votre code d’exception se situe dans la plage autorisée par Snowflake Scripting. Si ce n’est pas le cas, utilisez un autre numéro d’exception disponible.
Pour toute assistance supplémentaire, contactez-nous à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0089¶
Cet EWI n’est plus utilisé. Veuillez consulter SSC-FDM-OR0044 pour la documentation actuelle.
Gravité¶
Faible
Description¶
Cet avertissement apparaît lors de l’utilisation de la fonction REGEXP_LIKE
d’Oracle avec un paramètre de correspondance (troisième paramètre). L’avertissement indique que la fonction REGEXP_LIKE_UDF
de Snowflake, qui remplace REGEXP_LIKE
d’Oracle, peut ne pas prendre en charge tous les caractères des paramètres de correspondance. Le résultat de la requête dans Snowflake peut donc être différent de celui d’Oracle.
Exemple de code¶
Code d’entrée Oracle :¶
SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i')
ORDER BY last_name;
Code de sortie :¶
SELECT last_name
FROM
hr.employees
WHERE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0089 - REGEXP_LIKE_UDF MATCH PARAMETER MAY HAVE SOME FUNCTIONAL DIFFERENCES COMPARED TO ORACLE. ***/!!!
PUBLIC.REGEXP_LIKE_UDF(last_name, '([aeiou])\\1', 'i')
ORDER BY last_name;
Si votre condition
REGEXP_LIKE
contient des caractères non pris en charge dans la fonction définie par l’utilisateur, envisagez de modifier l’expression régulière pour obtenir le même comportement de correspondance sans utiliser ces caractères. Pour plus de détails sur les caractères non pris en charge, veuillez consulter la documentation REGEXP_LIKE_UDF.Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0128¶
Certaines parties du code de sortie ont été supprimées pour rendre l’exemple plus clair et plus facile à suivre.
Gravité¶
Faible
Description¶
Ce message indique qu’un attribut de curseur booléen ne peut pas être utilisé dans SnowScript, soit parce qu’il n’est pas pris en charge, soit parce qu’il n’existe pas de fonctionnalité équivalente. Le tableau ci-dessous dresse la liste des attributs booléens du curseur qui peuvent être répliqués dans SnowScript :
| Boolean Cursor Attribute | Statut | | | - | | %FOUND
| Peut être émulé | | %NOTFOUND
| Can be emulated | | %ISOPEN
| Non pris en charge |
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE cursor_attributes_proc
IS
is_open_attr BOOLEAN;
found_attr BOOLEAN;
my_record table1%ROWTYPE;
CURSOR my_cursor IS SELECT * FROM table1;
BEGIN
OPEN my_cursor;
LOOP
FETCH my_cursor INTO my_record;
EXIT WHEN my_cursor%NOTFOUND;
is_open_attr := my_cursor%ISOPEN;
found_attr := my_cursor%FOUND;
END LOOP;
CLOSE my_cursor;
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE cursor_attributes_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
is_open_attr BOOLEAN;
found_attr BOOLEAN;
my_record OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
my_cursor CURSOR
FOR
SELECT
OBJECT_CONSTRUCT( *) sc_cursor_record FROM
table1;
BEGIN
OPEN my_cursor;
LOOP
--** SSC-PRF-0003 - FETCH INSIDE A LOOP IS CONSIDERED A COMPLEX PATTERN, THIS COULD DEGRADE SNOWFLAKE PERFORMANCE. **
FETCH my_cursor INTO
:my_record;
IF (my_record IS NULL) THEN
EXIT;
END IF;
is_open_attr := null /*my_cursor%ISOPEN*/!!!RESOLVE EWI!!! /*** SSC-EWI-OR0128 - BOOLEAN CURSOR ATTRIBUTE %ISOPEN IS NOT SUPPORTED IN SNOWFLAKE ***/!!!;
found_attr := my_record IS NOT NULL;
END LOOP;
CLOSE my_cursor;
END;
$$;
Recommandations¶
Pour obtenir une assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0068¶
Gravité¶
Medium
Description¶
Cette erreur se produit lorsque la valeur de START WITH
est supérieure à la valeur maximale autorisée par Snowflake. Selon la documentation de Snowflake, la valeur de début de séquence doit être comprise dans l’intervalle d’un entier de 64 bits en complément à deux : de -2^63
à 2^63-1
. Plus précisément, les valeurs maximales autorisées sont les suivantes :
Chiffres positifs : 9223372036854775807
Nombres négatifs : 9223372036854775808
Exemple de code¶
Code d’entrée :¶
CREATE SEQUENCE SEQUENCE1
START WITH 9223372036854775808;
CREATE SEQUENCE SEQUENCE2
START WITH -9223372036854775809;
Code de sortie :¶
CREATE OR REPLACE SEQUENCE SEQUENCE1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0068 - SEQUENCE START VALUE EXCEEDS THE MAX VALUE ALLOWED BY SNOWFLAKE. ***/!!!
START WITH 9223372036854775808
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}';
CREATE OR REPLACE SEQUENCE SEQUENCE2
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0068 - SEQUENCE START VALUE EXCEEDS THE MAX VALUE ALLOWED BY SNOWFLAKE. ***/!!!
START WITH -9223372036854775809
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}';
Recommandations¶
Nous vous recommandons de réinitialiser la séquence et d’adapter son utilisation. NOTE : assurez-vous que la colonne cible a une capacité suffisante pour stocker cette valeur.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0039¶
Certaines parties du code de sortie ont été supprimées pour rendre l’exemple plus clair et plus facile à suivre.
Gravité¶
Faible
Description¶
Ce message apparaît lorsque SnowConvert détecte une requête contenant une clause NOCYCLE, qui n’est actuellement pas prise en charge par Snowflake.
Cette instruction indique quand une opération récursive se produit.
Pour de plus amples informations sur les fonctionnalités des clauses, veuillez vous référer à la documentation.
Exemple de code¶
Connecter par¶
Code d’entrée :¶
CREATE OR REPLACE FORCE NONEDITIONABLE VIEW VIEW01 AS
SELECT
UNIQUE A.*
FROM
TABLITA A
WHERE
A.X = A.C CONNECT BY NOCYCLE A.C = 0 START WITH A.B = 1
HAVING
X = 1
GROUP BY
A.C;
Code de sortie :¶
CREATE OR REPLACE VIEW VIEW01
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
AS
SELECT DISTINCT
A.*
FROM
TABLITA A
WHERE
A.X = A.C
GROUP BY
A.C
HAVING
X = 1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0039 - NOCYCLE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
CONNECT BY
A.C = 0 START WITH A.B = 1;
Recommandations¶
Si votre hiérarchie de données contient des cycles, veuillez vous référer à cet article pour savoir comment les traiter.
Pour toute assitance supplémentaire, contactez notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0029¶
Description¶
Snowflake ne prend pas en charge la fonction « Défaut en cas d’erreur de conversion ».
Exemple de code¶
Code d’entrée :¶
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0029 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE ***/!!! TO_NUMBER('2,00') "Value" FROM DUAL;
Recommandations¶
Envisagez de créer une fonction définie par l’utilisateur (UDF) pour répliquer la fonctionnalité de la valeur
DEFAULT
lors du traitement deON CONVERSION ERROR
.Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0078¶
Gravité¶
Medium
Description¶
SnowConvert n’a pas pu analyser l’instruction dynamique SQL contenue dans la commande Execute Immediate.
Générez des procédures et des macros dans JavaScript en ajoutant l’indicateur -t JavaScript
ou --PLTargetLanguage JavaScript
à votre commande.
Exemple de code¶
Oracle :¶
--Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE PROC1 AS
BEGIN
EXECUTE IMMEDIATE 'NOT A VALID SQL STATEMENT';
END;
Snowflake Scripting:¶
CREATE OR REPLACE PROCEDURE PROC1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0078 - UNABLE TO PARSE DYNAMIC SQL STATEMENT ***/!!!
/*EXEC(`NOT A VALID SQL STATEMENT`)*/
;
$$;
Recommandations¶
Vérifiez que la syntaxe de votre instruction dynamique SQL est correcte.
Consultez la documentation du site SnowConvert pour vérifier si votre instruction est prise en charge.
Pour toute assistance supplémentaire, contactez-nous à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0118¶
Gravité¶
Medium
Description¶
Oracle comprend des vues et des tables intégrées que Snowflake ne prend pas en charge. Lorsque ces éléments sont utilisés dans des requêtes ou des instructions, SnowConvert génère un message d’erreur.
Exemple de code¶
Code d’entrée :¶
SELECT * FROM ALL_COL_COMMENTS;
SELECT * FROM (SELECT * FROM ALL_COL_COMMENTS);
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0118 - TRANSLATION FOR ORACLE BUILT-IN TABLE/VIEW 'ALL_COL_COMMENTS' IS NOT CURRENTLY SUPPORTED. ***/!!!
* FROM
ALL_COL_COMMENTS;
SELECT * FROM (SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0118 - TRANSLATION FOR ORACLE BUILT-IN TABLE/VIEW 'ALL_COL_COMMENTS' IS NOT CURRENTLY SUPPORTED. ***/!!! * FROM
ALL_COL_COMMENTS);
Recommandations¶
Les informations généralement contenues dans les vues intégrées d’Oracle sont disponibles dans Snowflake par l’intermédiaire de Information Schema ou de la commande SHOW soit par le biais du schéma d’information, soit en utilisant la commande
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0009¶
Gravité¶
Élevé
Description¶
La fonction JSON_TABLE n’est pas prise en charge dans cette version.
Exemple de code¶
Code d’entrée :¶
SELECT jt.phones
FROM j_purchaseorder,
JSON_TABLE(po_document, '$.ShippingInstructions'
COLUMNS
(phones VARCHAR2(100) FORMAT JSON PATH '$.Phone')) AS jt;
Code de sortie :¶
SELECT jt.phones
FROM
j_purchaseorder,
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0009 - JSON_TABLE IS NOT SUPPORTED ***/!!!
JSON_TABLE(po_document, '$.ShippingInstructions'
COLUMNS
(phones VARCHAR(100) FORMAT JSON PATH '$.Phone')) AS jt;
Recommandations¶
Utilisez la fonction FLATTEN de Snowflake comme alternative à la fonctionnalité JSON_TABLE.
Pour toute assitance supplémentaire, contactez notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0108¶
Certaines parties du code de sortie ont été supprimées pour rendre l’exemple plus clair et plus facile à suivre.
Gravité¶
Medium
Description¶
Les types de variables Oracle tels que les curseurs, les collections, les enregistrements et les types définis par l’utilisateur ne peuvent pas être directement convertis vers Snowflake. En outre, Snowflake Scripting ne prend pas actuellement en charge la transformation des caractères génériques, des objets et des paramètres de sortie.
La conversion de ces variables en types de données semi-structurées Snowflake peut constituer une solution dans certains cas.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE pinvalidassign(out_parameter IN OUT NUMBER)
AS
record_variable employees%ROWTYPE;
TYPE cursor_type IS REF CURSOR;
cursor1 cursor_type;
cursor2 SYS_REFCURSOR;
TYPE collection_type IS TABLE OF NUMBER INDEX BY VARCHAR(64);
collection_variable collection_type;
BEGIN
--Record Example
record_variable.last_name := 'Ortiz';
--Cursor Example
cursor1 := cursor2;
--Collection
collection_variable('Test') := 5;
--Out Parameter
out_parameter := 123;
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE pinvalidassign (out_parameter NUMBER(38, 18))
RETURNS VARIANT
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
record_variable OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
-- !!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'PL REF CURSOR TYPE DEFINITION' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
-- TYPE cursor_type IS REF CURSOR;
cursor1_res RESULTSET;
cursor2_res RESULTSET;
-- !!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'PL COLLECTION TYPE DEFINITION' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
-- TYPE collection_type IS TABLE OF NUMBER INDEX BY VARCHAR(64);
collection_variable VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'collection_type' USAGE CHANGED TO VARIANT ***/!!!;
BEGIN
--Record Example
record_variable := OBJECT_INSERT(record_variable, 'LAST_NAME', 'Ortiz', true);
--Cursor Example
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0108 - THE FOLLOWING ASSIGNMENT STATEMENT IS NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
cursor1 := :cursor2;
--Collection
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0108 - THE FOLLOWING ASSIGNMENT STATEMENT IS NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
collection_variable('Test') := 5;
--Out Parameter
out_parameter := 123;
RETURN out_parameter;
END;
$$;
Recommandations¶
Envisagez de modifier le type de données de la variable ou d’utiliser les types de données semi-structurées de Snowflake pour répliquer le comportement souhaité.
Pour toute assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0008¶
Gravité¶
Faible
Description¶
Cette erreur se produit lorsque le système rencontre des formats de date qui ne sont pas reconnus, ce qui peut entraîner des résultats inattendus.
Exemple de code¶
Code d’entrée :¶
SELECT TO_CHAR(DATE '1998-12-25','iw-iyyy') FROM DUAL;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0008 - UNKNOWN FORMAT, MAY HAVE UNEXPECTED BEHAVIOR ***/!!!
TO_CHAR(DATE '1998-12-25','iw-iyyy'') FROM DUAL;
Remarque : le format de date « iw-iyyy » n’est pas pris en charge.
Recommandations¶
Pour obtenir la liste des formats d’horodatage pris en charge, veuillez vous référer à la documentation.
Pour toute assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0109¶
Gravité¶
Medium
Description¶
Snowflake Scripting ne prend pas en charge l’utilisation d’expressions comme arguments dans la clause USING des instructions EXECUTE IMMEDIATE, contrairement à Oracle où cette fonctionnalité est disponible.
Snowflake Scripting prend en charge les expressions variables. Vous pouvez remplacer une expression en l’affectant manuellement à une variable, comme le montre l’exemple ci-dessous.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE expression_arguments
IS
immediate_input INTEGER := 0;
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO immediate_table VALUES (:value)' USING immediate_input+1;
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE expression_arguments ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
immediate_input INTEGER := 0;
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-0030 - THE STATEMENT BELOW HAS USAGES OF DYNAMIC SQL. ***/!!!
EXECUTE IMMEDIATE 'INSERT INTO immediate_table
VALUES (?)' USING (
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0109 - EXPRESSIONS AS ARGUMENTS OF USING CLAUSE IS NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
:immediate_input +1);
END;
$$;
Procédure d’exécution immédiate de migration manuelle :¶
Pour résoudre l’erreur de compilation tout en conservant les mêmes résultats qu’Oracle, utilisez la procédure décrite ci-dessus.
CREATE OR REPLACE PROCEDURE PUBLIC.expression_arguments ()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
immediate_input INTEGER := 0;
using_argument_variable INTEGER;
BEGIN
using_argument_variable := immediate_input+1;
EXECUTE IMMEDIATE 'INSERT INTO PUBLIC.immediate_table VALUES (?)' USING (using_argument_variable );
END;
$$;
Recommandations¶
Pour migrer manuellement les procédures, créez une variable et affectez-lui l’expression.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0049¶
Gravité¶
Critique
Certaines parties du code ont été omises pour que l’exemple reste clair et concis.
Description¶
Cet avertissement apparaît lorsque vous tentez d’utiliser un membre non pris en charge d’un paquet avec état.
Cette fonction sera disponible dans une prochaine version.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PACKAGE MY_PACKAGE
AS
TYPE COLLECTIONTYPEDEFINITION IS TABLE OF BULKCOLLECTTABLE%ROWTYPE;
END;
Code de sortie :¶
CREATE SCHEMA IF NOT EXISTS MY_PACKAGE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0049 - PACKAGE TYPE DEFINITIONS in stateful package MY_PACKAGE are not supported yet ***/!!!
TYPE COLLECTIONTYPEDEFINITION IS TABLE OF BULKCOLLECTTABLE%ROWTYPE;
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0129¶
Gravité¶
Faible
Certaines parties de la sortie du code ont été supprimées pour rendre l’exemple plus clair.
Description¶
Cet avertissement apparaît lorsque le système ne peut pas déterminer le type de données d’un élément parce que son attribut TYPE
référencé est introuvable. Dans ce cas, le système affecte automatiquement le type de données VARIANT
à l’élément.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE procedure01
IS
var1 table01.col1%TYPE;
BEGIN
NULL;
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE procedure01 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
var1 VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-OR0129 - TYPE ATTRIBUTE 'table01.col1%TYPE' COULD NOT BE RESOLVED, SO IT WAS TRANSFORMED TO VARIANT ***/!!!;
BEGIN
NULL;
END;
$$;
Recommandations¶
Vérifiez manuellement le type de données de l’élément référencé et mettez à jour l’attribut TYPE dans l’élément de référence en conséquence.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0069¶
Gravité¶
Medium
Description¶
Snowflake ne prend pas en charge la propriété CURRVAL pour les séquences.
Exemple de code¶
Oracle :¶
select seq1.currval from dual;
Snowflake Scripting:¶
select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0069 - THE SEQUENCE CURRVAL PROPERTY IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
seq1.currval from dual;
Recommandations¶
Pour obtenir des références sur le traitement des scénarios impliquant la propriété CURRVAL, veuillez vous référer à la documentation de Snowflake.
Pour toute assitance supplémentaire, contactez notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0038¶
Gravité¶
Faible
Description¶
La search_clause
contrôle la manière dont les lignes sont traitées dans une instruction SELECT en définissant leur ordre. Bien que cette fonction vous permette de spécifier comment les données doivent être parcourues et renvoyées dans Oracle, elle n’est pas disponible dans Snowflake.
Dans Oracle et les bases de données similaires, la search_clause
permet de contrôler la manière dont les données hiérarchiques sont traitées dans les requêtes récursives ou les Common Table Expressions (CTEs). Lorsque vous spécifiez des colonnes dans la [search_clause
(https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SELECT.html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__I2077142), vous pouvez choisir entre les méthodes de parcours « depth-first » ou « breadth-first », qui déterminent l’ordre de traitement des lignes.
Dans Snowflake, un message search_clause
sera généré puis supprimé.
Exemple de code¶
Code d’entrée :¶
WITH dup_hiredate(eid, emp_last, mgr_id, reportLevel, hire_date, job_id) AS
(SELECT aValue from atable) SEARCH DEPTH FIRST BY hire_date SET order1 SELECT aValue from atable;
Code de sortie :¶
WITH dup_hiredate(eid, emp_last, mgr_id, reportLevel, hire_date, job_id) AS
(
SELECT aValue from
atable
) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0038 - SEARCH CLAUSE REMOVED FROM THE WITH ELEMENT STATEMENT ***/!!!
SELECT aValue from
atable;
Recommandation¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0033¶
Gravité¶
Medium
Description¶
Les déclarations de variables PL/SQL dans les clauses WITH ne sont actuellement pas prises en charge.
Exemple de code¶
Code d’entrée :¶
WITH FUNCTION get_domain ( url VARCHAR2 ) RETURN VARCHAR2 IS pos BINARY_INTEGER;
len BINARY_INTEGER;
BEGIN
pos := INSTR(url, 'www.');
len := INSTR(SUBSTR(url, pos + 4), '.') - 1;
END; SELECT aValue from aTable;
Code de sortie :¶
// SnowConvert Helpers Code section is omitted.
WITH
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0033 - PLDECLARATION IN WITH NOT SUPPORTED ***/!!!
FUNCTION get_domain ( url VARCHAR2 ) RETURN VARCHAR2 IS pos BINARY_INTEGER;
len BINARY_INTEGER;
BEGIN
pos := INSTR(url, 'www.');
len := INSTR(SUBSTR(url, pos + 4), '.') - 1;
END; SELECT aValue from
aTable;
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0007¶
Description¶
Ce message apparaît lorsque vous tentez d’utiliser une instruction Create Type qui n’est pas prise en charge par Snowflake.
Exemple de code¶
Code d’entrée (Oracle) :¶
CREATE TYPE type6 UNDER type5(COL1 INTEGER);
Code de sortie :¶
--!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
;
Recommandations¶
Aucune action n’est requise de la part des utilisateurs.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0116¶
Gravité¶
Medium
Certaines parties du code de sortie ont été supprimées pour rendre l’exemple plus clair.
Description¶
Cette erreur se produit lorsque l’on tente d’effectuer des opérations arithmétiques exclusivement avec des intervalles. Snowflake ne prend pas en charge les calculs entre deux valeurs d’intervalle.
Exemple de code¶
Code d’entrée :¶
SELECT INTERVAL '1-1' YEAR(2) TO MONTH + INTERVAL '1-1' YEAR(2) + INTERVAL '1-1' YEAR(2) TO MONTH FROM dual;
SELECT INTERVALCOLUMN + INTERVAL '1-1' YEAR(2) TO MONTH FROM INTERVALTABLE;
Code de sortie :¶
SELECT
--INTERVAL '1-1 year' + INTERVAL '1y, 1mm' + INTERVAL '1y, 1mm'
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0116 - OPERATIONS BETWEEN INTERVALS ARE NOT SUPPORTED BY SNOWFLAKE ***/!!!
null
FROM dual;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN Unknown AND Interval ***/!!! INTERVALCOLUMN + INTERVAL '1y, 1mm'
FROM
INTERVALTABLE;
Recommandations¶
Si le calendrier d’une opération pose problème, vous pouvez le corriger en ajoutant des dates ou des horodatages à l’emplacement approprié.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0046¶
Cet avertissement n’est plus utilisé. Veuillez consulter SSC-EWI-0109 pour la documentation actuelle.
Gravité¶
Medium
Description¶
Lorsqu’une commande de modification de table n’est pas compatible avec la syntaxe de Snowflake, le code sera commenté et cette notification sera ajoutée en tant que commentaire.
Exemple de code :¶
Code d’entrée :¶
ALTER TABLE SOMENAME DEFAULT COLLATION SOMENAME;
ALTER TABLE SOMENAME ROW ARCHIVAL;
ALTER TABLE SOMENAME MODIFY CLUSTERING;
ALTER TABLE SOMENAME DROP CLUSTERING;
ALTER TABLE SOMENAME SHRINK SPACE COMPACT CASCADE;
Code de sortie :¶
!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **
ALTER TABLE SOMENAME
DEFAULT COLLATION SOMENAME;
!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **
ALTER TABLE SOMENAME
ROW ARCHIVAL;
!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **
ALTER TABLE SOMENAME
MODIFY CLUSTERING;
!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **
ALTER TABLE SOMENAME
DROP CLUSTERING;
!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **
ALTER TABLE SOMENAME
SHRINK SPACE COMPACT CASCADE;
Recommandations¶
Aucune autre action n’est nécessaire de votre part.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0023¶
Gravité¶
Élevé
Certaines parties du code ont été supprimées pour rendre l’exemple plus clair et plus facile à comprendre.
Description¶
Cette erreur se produit lorsqu’une fonction d’agrégation est utilisée
DENSE_RANK() : attribue un rang à chaque ligne d’une partition, sans interruption dans la séquence de classement en cas d’égalité
RANK() : attribue un rang à chaque ligne d’une partition, avec des écarts dans la séquence de classement en cas d’égalité
PERCENT_RANK() : calcule le rang relatif d’une ligne au sein d’une partition sous forme de pourcentage (0 à 1)
CUME_DIST() : calcule la distribution cumulative d’une valeur à l’intérieur d’une partition (0 à 1)
n’est pas pris en charge par Snowflake.
Exemple de code¶
Code d’entrée :¶
SELECT DENSE_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;
SELECT RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;
SELECT PERCENT_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;
SELECT CUME_DIST(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - DENSE_RANK AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!!
DENSE_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
employees;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - RANK AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
employees;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - PERCENT_RANK AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! PERCENT_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
employees;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - CUME_DIST AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! CUME_DIST(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
employees;
Recommandations¶
Pour obtenir une assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0072¶
Gravité¶
Medium
Certaines parties du code ont été supprimées pour rendre l’exemple plus clair et plus facile à comprendre.
Générez des procédures et des macros dans JavaScript en ajoutant l’indicateur -t JavaScript
ou --PLTargetLanguage JavaScript
à votre commande.
Description¶
Les membres procéduraux ne sont pas pris en charge dans cette version. Voici un exemple de ce que nous entendons par membres procéduraux :
Constantes définies dans le code
Curseurs de base de données utilisés pour récupérer les données
Iinstructions Pragma qui contrôlent le comportement du compilateur
Variables définies dans le code
Exemple de code¶
Oracle :¶
-- Additional Params: -t JavaScript
CREATE OR REPLACE EDITIONABLE PROCEDURE PROCEDURE1
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
NULL;
END;
Snowflake Scripting:¶
--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0072 - PROCEDURAL MEMBER PRAGMA DECLARATION NOT SUPPORTED. ***/!!!
/* PRAGMA AUTONOMOUS_TRANSACTION */
;
null;
$$;
Recommandations¶
Aucune action n’est requise de la part des utilisateurs.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0052¶
Gravité¶
Faible
Certaines parties de la sortie du code ont été supprimées pour que l’exemple reste clair et concis.
Générez des procédures et des macros dans JavaScript en ajoutant l’indicateur -t JavaScript
ou --PLTargetLanguage JavaScript
à votre commande.
Description¶
Des exceptions existent à la fois dans Oracle et dans Snowflake. Cependant, la fonction RAISE prend en charge les trois tâches : la déclaration, l’affectation et l’élimination de l’erreur. C’est pourquoi la déclaration d’exception apparaît sous forme de commentaire et génère un message d’avertissement.
Exemple de code¶
Code d’entrée :¶
-- Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_SAMPLE AUTHID DEFINER IS
NEW_EXCEPTION EXCEPTION;
PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
BEGIN
IF true THEN
RAISE NEW_EXCEPTION;
END IF;
EXCEPTION
WHEN NEW_EXCEPTION THEN
--Handle Exceptions
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_SAMPLE ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
!!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'PlInvokerRightsClause' NODE ***/!!!
//AUTHID DEFINER
null
// SnowConvert Helpers Code section is omitted.
try {
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0052 - EXCEPTION DECLARATION IS HANDLED BY RAISE FUNCTION ***/!!!
/* NEW_EXCEPTION EXCEPTION */
;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED ***/!!!
/* PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63) */
;
if (true) {
RAISE(-63,`NEW_EXCEPTION`,`NEW_EXCEPTION`);
}
} catch(error) {
switch(error.name) {
case `NEW_EXCEPTION`: {
break;
}
default: {
throw error;
break;
}
}
}
//Handle Exceptions
;
$$;
Pour une meilleure lisibilité, certaines sections du code de sortie ont été omises.
Recommandations¶
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0095¶
Gravité¶
Faible
Description¶
Les types de données INTERVAL YEAR TO MONTH
et INTERVAL DAY TO SECOND
sont convertis en VARCHAR(20)
car ils ne sont pas pris en charge. Par conséquent, vous ne pouvez pas effectuer d’opérations arithmétiques entre Type de date et les colonnes qui étaient à l’origine Type d’intervalle.
De plus, lorsque vous effectuez des opérations entre un type d’intervalle et un type de date (spécifiquement dans cette séquence), Snowflake ne prend pas en charge ces opérations et génère ce message EWI.
Exemple de code¶
Code d’entrée :¶
CREATE TABLE table_with_intervals
(
date_col DATE,
time_col TIMESTAMP,
intervalYearToMonth_col INTERVAL YEAR TO MONTH,
intervalDayToSecond_col INTERVAL DAY TO SECOND
);
-- Date + Interval Y to M
SELECT date_col + intervalYearToMonth_col FROM table_with_intervals;
-- Date - Interval D to S
SELECT date_col - intervalDayToSecond_col FROM table_with_intervals;
-- Timestamp + Interval D to S
SELECT time_col + intervalDayToSecond_col FROM table_with_intervals;
-- Timestamp - Interval Y to M
SELECT time_col - intervalYearToMonth_col FROM table_with_intervals;
Code de sortie :¶
CREATE OR REPLACE TABLE table_with_intervals
(
date_col TIMESTAMP /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/,
time_col TIMESTAMP(6),
intervalYearToMonth_col VARCHAR(20) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL YEAR TO MONTH DATA TYPE CONVERTED TO VARCHAR ***/!!!,
intervalDayToSecond_col VARCHAR(20) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL DAY TO SECOND DATA TYPE CONVERTED TO VARCHAR ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
-- Date + Interval Y to M
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! date_col + intervalYearToMonth_col FROM
table_with_intervals;
-- Date - Interval D to S
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! date_col - intervalDayToSecond_col FROM
table_with_intervals;
-- Timestamp + Interval D to S
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! time_col + intervalDayToSecond_col FROM
table_with_intervals;
-- Timestamp - Interval Y to M
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! time_col - intervalYearToMonth_col FROM
table_with_intervals;
Recommandations¶
Créez une fonction définie par l’utilisateur (UDF) qui réplique la fonctionnalité d’Oracle.
Utilisez la valeur transformée stockée dans la colonne pendant la migration en tant qu”Intervalle constante Snowflake lorsqu’elle est disponible.
Pour toute assistance supplémentaire, contactez-nous à l’adresse suivante : snowconvert-support@snowflake.com
¶
SSC-EWI-OR0126¶
Gravité¶
Medium
Description¶
Cette erreur se produit lors de la tentative d’utilisation d’un objet dont le type de données personnalisé est intégré au système.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE proc01 is
var1 DBMS_SQL.VARCHAR2_TABLE;
var2 CTX_CLS.DOC_TAB;
BEGIN
varX := var1.property;
varY := var2(1);
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE proc01 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
var1 VARIANT /*** SSC-FDM-0015 - REFERENCED CUSTOM TYPE 'DBMS_SQL.VARCHAR2_TABLE' IN QUERY NOT FOUND, USAGES MAY BE AFFECTED ***/;
var2 VARIANT /*** SSC-FDM-0015 - REFERENCED CUSTOM TYPE 'CTX_CLS.DOC_TAB' IN QUERY NOT FOUND, USAGES MAY BE AFFECTED ***/;
BEGIN
varX := var1.property !!!RESOLVE EWI!!! /*** SSC-EWI-OR0126 - UNUSABLE OBJECT var1, BUILT-IN CUSTOM TYPES ARE NOT SUPPORTED ***/!!!;
varY := var2(1) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0126 - UNUSABLE OBJECT var2, BUILT-IN CUSTOM TYPES ARE NOT SUPPORTED ***/!!!;
END;
$$;
Recommandations¶
Aucune action n’est requise de la part des utilisateurs.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0076¶
Gravité¶
Medium
Description¶
La traduction intégrée des paquets n’est pas disponible actuellement.
Exemple de code¶
Code d’entrée (Oracle) :¶
SELECT
UTL_RAW.CAST_TO_RAW('some magic here'),
DBMS_UTILITY.GET_TIME
FROM DUAL;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'UTL_RAW.CAST_TO_RAW' IS NOT CURRENTLY SUPPORTED. ***/!!!
'' AS CAST_TO_RAW,
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'DBMS_UTILITY.GET_TIME' IS NOT CURRENTLY SUPPORTED. ***/!!!
'' AS GET_TIME
FROM DUAL;
Recommandations¶
Aucune action n’est requise de la part des utilisateurs.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0136¶
Gravité¶
Critique
Description¶
Snowflake ne prend pas en charge actuellement la clause CURRENT OF à l’intérieur de la clause WHERE des instructions UPDATE et DELETE.
Exemple de code¶
Oracle :¶
CREATE OR REPLACE PROCEDURE proc_update_current_of
AS
CURSOR C1
IS
SELECT * FROM F_EMPLOYEE FOR UPDATE OF SALARY nowait;
BEGIN
FOR CREC IN C1
LOOP
UPDATE F_EMPLOYEE SET SALARY=SALARY+2000 WHERE CURRENT OF C1;
END LOOP;
END;
Snowflake Scripting:¶
CREATE OR REPLACE PROCEDURE proc_update_current_of ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
C1 CURSOR
FOR
SELECT * FROM
F_EMPLOYEE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0110 - FOR UPDATE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FOR UPDATE OF SALARY nowait;
BEGIN
OPEN C1;
--** SSC-PRF-0004 - THIS STATEMENT HAS USAGES OF CURSOR FOR LOOP **
FOR CREC IN C1 DO
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0136 - CURRENT OF CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
UPDATE F_EMPLOYEE
SET SALARY=
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!!SALARY+2000 WHERE CURRENT OF C1;
END FOR;
CLOSE C1;
END;
$$;
EWI apparenté¶
SSC-EWI-OR0036 : Avertissement : les opérations arithmétiques entre les types de données chaîne et date peuvent produire des résultats inattendus.
SSC-PRF-0004 : ce code contient des boucles basées sur des curseurs qui peuvent avoir un impact sur les performances.
SSC-EWI-OR0110 : la clause FOR UPDATE n’est pas actuellement prise en charge dans Snowflake.
Recommandations¶
Réécrivez la requête à l’aide des instructions standard
UPDATE
ouDELETE
. Incluez des conditions spécifiques aux colonnes dans la clauseWHERE
. Sachez que si votre table contient des enregistrements en double, la requête peut affecter ces enregistrements plusieurs fois.Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0013¶
Gravité¶
Medium
Description¶
Le paramètre NLS (National Language Support) n’est actuellement pas pris en charge pour les fonctions suivantes :
Convertir une valeur en chaîne de caractères (TOCHAR)
Convertir une valeur en date (TODATE)
Convertir une valeur en nombre (TONUMBER)
Conversion d’une valeur en horodatage (TOTIMESTAMP)
Convertir une valeur dans un type de données spécifié (CAST)
Exemple de code¶
Code d’entrée :¶
SELECT TO_NUMBER('-AusDollars100','9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''') "Amount" FROM DUAL;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0013 - NLS PARAMETER ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''' NOT SUPPORTED ***/!!!
TO_NUMBER('-AusDollars100','9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''') "Amount" FROM DUAL;
Recommandations¶
La fonction TO_NUMBER est transformée en une fonction définie par l’utilisateur (UDF/Stub), ce qui vous permet de personnaliser son comportement en fonction de vos exigences spécifiques en matière de paramètres.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0042¶
Certaines parties du code de sortie ont été supprimées pour rendre l’exemple plus clair et plus facile à suivre.
Gravité¶
Faible
Description¶
Ce message apparaît lorsque SnowConvert détecte une requête contenant une clause MODEL, qui n’est actuellement pas prise en charge par Snowflake.
Exemple de code¶
Code d’entrée :¶
SELECT
employee_id,
salary
FROM
employees
MODEL
DIMENSION BY (employee_id)
MEASURES (salary)
();
Code de sortie :¶
SELECT
employee_id,
salary
FROM
employees
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0042 - MODEL CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
MODEL
DIMENSION BY (employee_id)
MEASURES (salary)
();
Recommandations¶
Pour obtenir une assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0053¶
Gravité¶
Medium
Description¶
Cette erreur se produit lors d’une tentative d’extraction de données à l’aide d’un format d’entrée incorrect. En conséquence, le code est commenté et ce message s’affiche.
Exemple de code :¶
Code d’entrée :¶
SELECT CAST('12sdsd3,456E+40' AS NUMBER, '999,999EEE') FROM DUAL;
SELECT CAST('12345sdsd' AS NUMBER, '99999') FROM DUAL;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0053 - INCORRECT INPUT FORMAT '12sdsd3,456E+40' ***/!!!
CAST('12sdsd3,456E+40' AS NUMBER(38, 18) , '999,999EEE') FROM DUAL;
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0053 - INCORRECT INPUT FORMAT '12345sdsd' ***/!!! CAST('12345sdsd' AS NUMBER(38, 18) , '99999') FROM DUAL;
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0002¶
Certaines parties du code de sortie ont été supprimées pour rendre l’exemple plus clair et plus facile à suivre.
Gravité¶
Élevé
Description¶
Cette erreur se produit lorsque le système ne peut pas résoudre les colonnes d’une expression de sélection. Cela se produit généralement dans deux cas de figure :
Lorsqu’on fait référence à un accès de type qui n’a pas été résolu
Lorsque vous essayez d’accéder aux colonnes d’un type défini par l’utilisateur qui n’a pas de définition de colonne (tel qu’un type sans corps ou un type d’objet vide)
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE record_unknown_table_proc
AS
unknownTable_variable_rowtype unknownTable%ROWTYPE;
BEGIN
INSERT INTO MyTable values unknownTable_variable_rowtype;
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE record_unknown_table_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
unknownTable_variable_rowtype OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
BEGIN
INSERT INTO MyTable
SELECT
null !!!RESOLVE EWI!!! /*** SSC-EWI-OR0002 - COLUMNS FROM EXPRESSION unknownTable%ROWTYPE NOT FOUND ***/!!!;
END;
$$;
Recommandations¶
Vérifiez si la définition du type référencé contient des définitions de colonnes.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0036¶
Gravité¶
Faible
Description¶
Cette erreur se produit lorsque deux types de données incompatibles sont utilisés dans une opération arithmétique, ce qui peut entraîner des résultats inattendus.
Exemple de code¶
Code d’entrée :¶
SELECT
SYSDATE,
SYSDATE + '1',
SYSDATE + 'A'
from
dual;
Code de sortie :¶
SELECT
CURRENT_TIMESTAMP(),
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN Date AND String ***/!!!
CURRENT_TIMESTAMP() + '1',
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN Date AND String ***/!!!
CURRENT_TIMESTAMP() + 'A'
from
dual;
Lorsque vous effectuez des opérations entre les types de données Chaîne et Date, sachez que les résultats peuvent être inattendus ou incorrects. Il est recommandé de convertir la chaîne en un type de date avant d’effectuer toute opération liée à la date.
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0067¶
Gravité¶
Modéré
Certaines parties du code ont été omises pour que l’exemple reste clair et concis.
Description¶
Snowflake ne vous permet pas de définir plusieurs contraintes dans une seule instruction ALTER TABLE.
Exemple de code¶
Oracle :¶
ALTER TABLE TABLE1 ADD (
CONSTRAINT TABLE1_PK
PRIMARY KEY
(ID)
ENABLE VALIDATE,
CONSTRAINT TABLE1_FK foreign key(ID2)
references TABLE2 (ID) ON DELETE CASCADE);
Snowflake Scripting:¶
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0067 - MULTIPLE CONSTRAINT DEFINITION IN A SINGLE STATEMENT IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
ALTER TABLE TABLE1
ADD (
CONSTRAINT TABLE1_PK
PRIMARY KEY
(ID) ,
CONSTRAINT TABLE1_FK foreign key(ID2)
references TABLE2 (ID) ON DELETE CASCADE);
Recommandations¶
Aucune action n’est requise de la part des utilisateurs finaux.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0026¶
Certaines parties du code de sortie ont été supprimées pour rendre l’exemple plus clair et plus facile à suivre.
Gravité¶
Medium
Description¶
L’instruction ROWID n’est actuellement pas prise en charge dans cette version.
Exemple de code¶
Oracle :¶
SELECT QUERY_NAME.ROWID from TABLE1;
Snowflake Scripting:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0026 - ROWID NOT SUPPORTED ***/!!!
QUERY_NAME.ROWID from
TABLE1;
Recommandations¶
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0103¶
Gravité¶
Élevé
Description¶
Snowflake Scripting pour les instructions FOR LOOP
est limitée par rapport à celui d’Oracle. Alors qu’Oracle prend en charge plusieurs types de conditions (telles que les expressions booléennes, les collections et les enregistrements), Snowflake n’autorise que FOR LOOP
avec des plages d’entiers comme limites. Tout autre format de boucle sera marqué comme non pris en charge et devra être converti manuellement.
Clauses de contrôle d’itération Oracle que FOR LOOP
de Snowflake ne prend pas en charge :
single_expression_control
: évalue une seule expressionvalues_of_control
: traite les valeurs individuelles d’une collectionindices_of_control
: itère à travers les index d’un tableaupairs_of_control
: traite les paires clé-valeur d’une collection
La fonction cursor_iteration_control
n’est pas prise en charge actuellement. Cependant, vous pouvez la convertir en CURSOR FOR LOOP en supprimant les parenthèses de l’expression.
FOR i IN (cursor_variable) LOOP NULL ; END LOOP ;
Doit être remplacé par :
FOR i IN cursor_variable LOOP NULL ; END LOOP ;
Exemple de code¶
Code d’entrée Oracle :¶
CREATE OR REPLACE PROCEDURE P3
AS
TYPE values_aat IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
l_employee_values values_aat;
BEGIN
FOR power IN REPEAT power*2 WHILE power <= 64 LOOP
NULL;
END LOOP;
FOR i IN VALUES OF l_employee_values LOOP
NULL;
END LOOP;
END;
Code de sortie :¶
CREATE OR REPLACE PROCEDURE P3 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
-- !!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'PL COLLECTION TYPE DEFINITION' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
-- TYPE values_aat IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
l_employee_values VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'values_aat' USAGE CHANGED TO VARIANT ***/!!!;
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0103 - FOR LOOP FORMAT IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "WHILE" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR power IN REPEAT power*2 WHILE power <= 64 LOOP
NULL;
END LOOP;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0103 - FOR LOOP FORMAT IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN VALUES OF :l_employee_values LOOP
NULL;
END LOOP;
END;
$$;
Recommandations¶
Modifiez la condition
FOR LOOP
ou sélectionnez un autre typeLOOP
pour obtenir le même résultat.Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0090¶
Gravité¶
Medium
Certaines parties de la sortie du code ont été supprimées pour faciliter la compréhension.
Description¶
Cette erreur se produit lors de l’utilisation d’un OUTER JOIN de style Oracle avec l’opérateur (+) dans une clause BETWEEN contenant plusieurs tables. Snowflake ne prend pas en charge cette combinaison de syntaxe spécifique. Le problème se pose en particulier lorsque la clause BETWEEN fait référence à des colonnes provenant de tables différentes.
Exemple de code¶
Code d’entrée Oracle :¶
SELECT
*
FROM
hr.countries c, hr.regions r, hr.locations l WHERE
l.location_id BETWEEN r.region_id(+) AND c.region_id(+);
Code de sortie :¶
SELECT
*
FROM
hr.countries c,
hr.regions r,
hr.locations l WHERE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0090 - INVALID NON-ANSI OUTER JOIN BETWEEN PREDICATE CASE FOR SNOWFLAKE. ***/!!!
l.location_id BETWEEN r.region_id(+) AND c.region_id(+);
Recommandations¶
Convertissez manuellement la syntaxe Outer Join en syntaxe ANSI.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0123¶
Gravité¶
Medium
Description¶
Une référence à un lien de base de données a été supprimée du nom de l’objet car Snowflake ne prend pas en charge les liens de base de données. Seule la partie du nom précédant le symbole @
est conservée.
Exemple de code¶
Code d’entrée :¶
-- Creation of the database link
CREATE DATABASE LINK mylink
CONNECT TO user1 IDENTIFIED BY password1
USING 'connection_str';
-- Statements that use the database link we created
SELECT * FROM employees@mylink;
INSERT INTO employees@mylink
(employee_id, last_name, email, hire_date, job_id)
VALUES (999, 'Claus', 'sclaus@oracle.com', SYSDATE, 'SH_CLERK');
UPDATE employees@mylink SET min_salary = 3000
WHERE job_id = 'SH_CLERK';
DELETE FROM employees@mylink
WHERE employee_id = 999;
Code de sortie :¶
- Creation of the database link
-** SSC-OOS - OUT OF SCOPE CODE UNIT. CREATE DATABASE LINK IS OUT OF TRANSLATION SCOPE. **
--CREATE DATABASE LINK mylink
-- CONNECT TO user1 IDENTIFIED BY password1
-- USING 'connection_str'
-- Statements that use the database link we created
SELECT * FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
employees;
INSERT INTO
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
employees
(employee_id, last_name, email, hire_date, job_id)
VALUES (999, 'Claus', 'sclaus@oracle.com', CURRENT_TIMESTAMP(), 'SH_CLERK');
UPDATE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
employees
SET min_salary = 3000
WHERE job_id = 'SH_CLERK';
DELETE FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
employees
WHERE employee_id = 999;
Recommandations¶
Veillez à ce que tous les liens de la base de données aient un nom unique. Si plusieurs liens de base de données portent le même nom et que le code est migré plusieurs fois, l’interface Web externe (EWI) peut traiter les informations de manière incorrecte en fonction du lien de base de données traité en premier.
Déplacez les objets de la base de données référencés par les liens de base de données vers la même instance de base de données Snowflake que celle que vous utilisez.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0032¶
Gravité¶
Medium
Description¶
Cette erreur se produit lorsque vous tentez d’utiliser un paramètre non pris en charge dans une fonction.
Exemple de code¶
Code d’entrée :¶
SELECT TO_CHAR(DATE '1998-12-25', 'AM') FROM DUAL;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0032 - PARAMETER USED IN THE FUNCTION 'TO_CHAR' WITH FORMAT AM IS NOT SUPPORTED ***/!!!
TO_CHAR(DATE '1998-12-25', 'AM') FROM DUAL;
Recommandations¶
La fonction est convertie en modèle de fonction définie par l’utilisateur (UDF) que vous pouvez personnaliser en fonction du comportement du paramètre.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0006¶
Cet EWI n’est plus utilisé. Veuillez consulter la documentation SSC-FDM-OR0047 pour obtenir des informations à jour.
Gravité¶
Faible
Description¶
Le paramètre de session TIMESTAMP_OUTPUT_FORMAT doit être défini sur “DD-MON-YY HH24.MI.SS.FF AM TZH:TZM” pour garantir l’affichage des horodatages dans le bon format et maintenir l’équivalence entre les systèmes.
Exemple de code¶
Code d’entrée :¶
SELECT SYSTIMESTAMP FROM DUAL;
Exemple de sortie par défaut de TIMESTAMP dans Oracle¶
January 13, 2021 04:18:37.288656 PM UTC
Code de sortie :¶
SELECT
CURRENT_TIMESTAMP() !!!RESOLVE EWI!!! /*** SSC-EWI-OR0006 - YOU MAY NEED TO SET TIMESTAMP OUTPUT FORMAT ('DD-MON-YY HH24.MI.SS.FF AM TZH:TZM') ***/!!!
FROM DUAL;
Exemple de sortie par défaut de TIMESTAMP dans Snowflake¶
2021-01-13 08:18:19.720 -080
Recommandations¶
Pour modifier l’affichage des horodatages dans Snowflake, exécutez cette requête :
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'DD-MON-YY HH24.MI.SS.FF AM TZH:TZM';
Pour obtenir une assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0057¶
Gravité¶
Critique
Certaines parties de la sortie du code ont été supprimées pour faciliter la compréhension.
Description¶
Les procédures ou fonctions imbriquées (procédures/fonctions définies à l’intérieur d’autres procédures/fonctions) ne peuvent pas être traduites pour le moment. Cette fonction sera disponible dans une prochaine version.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE function FOO1 RETURN INTEGER AS
FUNCTION FOO2 return integer;
FUNCTION FOO2 RETURN INTEGER AS
BEGIN
RETURN 123;
END;
BEGIN
RETURN FOO2() + 456;
END;
Code de sortie :¶
--** SSC-FDM-0029 - USER DEFINED FUNCTION WAS TRANSFORMED TO SNOWFLAKE PROCEDURE **
!!!RESOLVE EWI!!! /*** SSC-EWI-0046 - NESTED FUNCTION/PROCEDURE DECLARATIONS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!!
CREATE OR REPLACE PROCEDURE FOO1 ()
RETURNS INTEGER
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0057 - TRANSFORMATION FOR NESTED PROCEDURE OR FUNCTION IS NOT SUPPORTED ***/!!!
FUNCTION FOO2 return integer;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0057 - TRANSFORMATION FOR NESTED PROCEDURE OR FUNCTION IS NOT SUPPORTED ***/!!!
FUNCTION FOO2 RETURN INTEGER AS
BEGIN
RETURN 123;
END;
BEGIN
RETURN FOO2() + 456;
END;
$$;
Recommandations¶
Aucune action n’est requise de la part des utilisateurs finaux.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0047¶
Gravité¶
Faible
Certaines parties du code ont été omises pour que l’exemple reste clair et concis.
Description¶
Cet avertissement apparaît lorsque la fonction TO_NCHAR
d’Oracle a été convertie en fonction TO_VARCHAR
de Snowflake au cours du processus de migration.
Il peut arriver que la transformation du code entraîne des erreurs de compilation ou produise une sortie inattendue qui diffère de l’original.
Exemple de code¶
Code d’entrée :¶
select TO_NCHAR(sysdate,'DY','nls_date_language=english') from dual
Code de sortie :¶
select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0047 - TO_NCHAR TRANSFORMED TO TO_VARCHAR, IT MAY NOT BE COMPILABLE IN SNOWFLAKE ***/!!!
TO_VARCHAR(CURRENT_TIMESTAMP(),'DY','nls_date_language=english') from dual;
Le code présenté précédemment génère une erreur lorsqu’il est exécuté dans Snowflake.
Tous les scénarios ne donnent pas lieu à des erreurs.
Code d’entrée :¶
SELECT TO_NCHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
Code de sortie :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0047 - TO_NCHAR TRANSFORMED TO TO_VARCHAR, IT MAY NOT BE COMPILABLE IN SNOWFLAKE ***/!!!
TO_VARCHAR(CURRENT_TIMESTAMP(), 'YYYY-MM-DD') FROM dual;
L’exemple final s’exécute avec succès dans Snowflake et produit la même sortie lors de l’exécution.
Recommandations¶
Aucune action n’est requise de votre part.
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0016¶
Gravité¶
Medium
Description¶
Les fonctions XML énumérées ci-dessous ne sont pas prises en charge actuellement :
La fonction EXTRACT permet de récupérer les données des documents XML
EXTRACTVALUE récupère des valeurs spécifiques à partir des éléments XML
XMLSEQUENCE convertit les données XML en format de table
XMLTYPE définit un type de données pour le stockage du contenu XML
Exemple de code¶
Code d’entrée :¶
select * from table(XMLSequence(XMLType('
<Product ProductCode="200">
<BrandName>Notebook</BrandName>
<ProductList>
<Item ItemNo="200A"><Price>900</Price></Item>
<Item ItemNo="200B"><Price>700</Price></Item>
<Item ItemNo="200C"><Price>650</Price></Item>
<Item ItemNo="200D"><<Price>750</Price></Item>
</ProductList>
</Product>')));
Code de sortie :¶
select * from table(
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0016 - FUNCTION RELATED WITH XML NOT SUPPORTED ***/!!!
XMLSequence(
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0016 - FUNCTION RELATED WITH XML NOT SUPPORTED ***/!!!XMLType('
<Product ProductCode="200">
<BrandName>Notebook</BrandName>
<ProductList>
<Item ItemNo="200A"><Price>900</Price></Item>
<Item ItemNo="200B"><Price>700</Price></Item>
<Item ItemNo="200C"><Price>650</Price></Item>
<Item ItemNo="200D"><<Price>750</Price></Item>
</ProductList>
</Product>')));
Recommandations¶
Pour obtenir une assistance supplémentaire, veuillez contacter notre équipe de support à l’adresse suivante : snowconvert-support@snowflake.com
SSC-EWI-OR0133¶
Gravité¶
Medium
Description¶
Lors de la conversion d’une instruction OPEN FOR
, SC crée une affectation de curseur utilisant le même nom que la variable de curseur d’origine, ainsi que des instructions supplémentaires pour répliquer son comportement. Toutefois, si le code d’origine contient plusieurs instructions OPEN FOR
utilisant la même variable curseur, le code converti comportera plusieurs affectations de curseur avec des noms identiques. Cela entraînera des erreurs de compilation dans Snowflake.
Exemple de code¶
Code d’entrée¶
CREATE OR REPLACE PROCEDURE open_for_procedure
AS
query1 VARCHAR(200) := 'SELECT 123 FROM dual';
query2 VARCHAR(200) := 'SELECT 456 FROM dual';
my_cursor_variable SYS_REFCURSOR;
BEGIN
OPEN my_cursor_variable FOR query1;
OPEN my_cursor_variable FOR query2;
END;
Code de sortie¶
CREATE OR REPLACE PROCEDURE open_for_procedure ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
query1 VARCHAR(200) := 'SELECT 123 FROM dual';
query2 VARCHAR(200) := 'SELECT 456 FROM dual';
my_cursor_variable_res RESULTSET;
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-0030 - THE STATEMENT BELOW HAS USAGES OF DYNAMIC SQL. ***/!!!
my_cursor_variable_res := (
EXECUTE IMMEDIATE :query1
);
LET my_cursor_variable CURSOR
FOR
my_cursor_variable_res;
OPEN my_cursor_variable;
!!!RESOLVE EWI!!! /*** SSC-EWI-0030 - THE STATEMENT BELOW HAS USAGES OF DYNAMIC SQL. ***/!!!
my_cursor_variable_res := (
EXECUTE IMMEDIATE :query2
);
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0133 - THE CURSOR VARIABLE NAMED 'my_cursor_variable' HAS ALREADY BEEN ASSIGNED IN ANOTHER CURSOR ***/!!!
LET my_cursor_variable CURSOR
FOR
my_cursor_variable_res;
OPEN my_cursor_variable;
END;
$$;
EWI apparenté¶
SSC-EWI-0030 : une dynamique SQL est détectée dans l’instruction suivante.
Recommandations¶
Pour corriger les erreurs de compilation dans le code de sortie, renommez toutes les affectations de curseur qui affichent le message d’erreur SSC-EWI-OR0133.
Pour toute assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com