SnowConvert AI - Problèmes Oracle¶
SSC-EWI-OR0001¶
La valeur de début de séquence avec “LIMIT VALUE” n’est pas prise en charge par Snowflake.
Description¶
Cette erreur apparaît lorsque la valeur de l’instruction START WITH est LIMIT VALUE.
Dans Oracle, cette clause n’est utilisée que dans ALTER TABLE.
STARTWITHLIMIT VALUE, qui est spécifique auxidentity_options, ne peut être utilisée qu’avecALTERTABLEMODIFY. Si vous spécifiezSTARTWITHLIMIT VALUE, la base de données Oracle verrouille la table et trouve la valeur maximale de la colonne d’identité dans la table (pour les séquences croissances) ou la valeur minimale de la colonne d’identité (pour les séquences décroissantes) et attribue la valeur comme point culminant du générateur de séquences. La valeur suivante renvoyée par le générateur de séquences sera le point culminant +INCREMENTBYintegerpour les séquences croissances, ou le point culminant -INCREMENTBYintegerpour les séquences décroissantes.
ALTER TABLE ORACLE¶
Exemple de code¶
Code d’entrée :¶
CREATE SEQUENCE SEQUENCE1
START WITH LIMIT VALUE;
Code généré :¶
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"}}';
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0002¶
Colonnes de l’expression introuvables
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Élevé
Description¶
Cette erreur se produit lorsque les colonnes d’une expression Select n’ont pas pu être résolues, généralement lorsqu’elle fait référence à un accès de type dont la référence n’a pas été résolue ou à une colonne avec un type défini par l’utilisateur dont les colonnes n’ont pas été définies, comme un type sans corps ou un type d’objet sans colonnes.
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 généré :¶
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;
$$;
Meilleures pratiques¶
Vérifiez que la définition de type référencée comporte bien des colonnes.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0004¶
La syntaxe utilisée dans Select n’est pas prise en charge dans Snowflake.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Élevé
Description¶
Cet avertissement se produit lorsqu’une clause dans Select n’est pas prise en charge dans Snowflake. Les clauses non prises en charge sont les suivantes :
CONTAINERS
HIERARCHIES
EXTERNAL MODIFY
SHARDS
Exemple de code¶
Code d’entrée :¶
SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
Code généré :¶
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);
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0005¶
Les paramètres BFILE/BLOB sont considérés comme binaires. Un format peut être nécessaire.
Note
Cet EWI est obsolète. Veuillez vous référer à la documentation SSC-FDM-OR0043.
Gravité¶
Faible
Description¶
Cette erreur se produit lorsque TO_CLOB est converti en fonction TO_VARCHAR. Un format peut être nécessaire pour les paramètres BFILE/BLOB.
Exemple de code¶
Code d’entrée: ¶
SELECT TO_CLOB('Lorem ipsum dolor sit amet') FROM DUAL;
Code généré :¶
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;
Meilleures pratiques¶
Vérifiez si les sorties dans le code d’entrée et le code converti sont équivalentes et ajoutez un paramètre de format si nécessaire.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0006¶
Il peut être nécessaire de définir un format TimeStampOutput.
Note
Cet EWI est obsolète. Veuillez vous référer à la documentation SSC-FDM-OR0047.
Gravité¶
Faible
Description¶
Le paramètre de session TIMESTAMP_OUTPUT_FORMAT doit peut-être être défini sur “DD-MON-YY HH24.MI.SS.FF AM TZH:TZM” pour l’équivalence de sortie de l’horodatage.
Exemple de code¶
Code d’entrée: ¶
SELECT SYSTIMESTAMP FROM DUAL;
Exemple de sortie par défaut de TIMESTAMP dans Oracle¶
Sortie
13-JAN-21 04.18.37.288656 PM +00:00
Code généré :¶
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¶
Sortie
2021-01-13 08:18:19.720 -080
Meilleures pratiques¶
Pour modifier le format de sortie de l’horodatage dans Snowflake, utilisez la requête suivante :
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'DD-MON-YY HH24.MI.SS.FF AM TZH:TZM';Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0007¶
Create Type non pris en charge dans Snowflake
Description¶
Ce message est ajouté lorsqu’une instruction Create Type non prise en charge par Snowflake est utilisée.
Exemple de code¶
Code d’entrée (Oracle) :¶
CREATE TYPE type6 UNDER type5(COL1 INTEGER);
Code généré :¶
--!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0008¶
Format inconnu. Il peut avoir un comportement inattendu.
Gravité¶
Faible
Description¶
Cette erreur est ajoutée pour les formats de date inconnus qui peuvent avoir un comportement inattendu.
Exemple de code¶
Code d’entrée :¶
SELECT TO_CHAR(DATE '1998-12-25','iw-iyyy') FROM DUAL;
Code généré :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0008 - UNKNOWN FORMAT, MAY HAVE UNEXPECTED BEHAVIOR ***/!!!
TO_CHAR(DATE '1998-12-25','iw-iyyy'') FROM DUAL;
Note
Notez que « iw-iyyy » n’est pas un format pris en charge.
Meilleures pratiques¶
Consultez cette documentation pour les formats d’horodatage pris en charge.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0009¶
JSON_TABLE n’est pas pris en charge.
Gravité¶
Élevé
Description¶
La fonction JSON_TABLE n’est actuellement pas prise en charge.
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 généré :¶
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;
Meilleures pratiques¶
Vous pouvez tirer parti de la fonction FLATTEN dans Snowflake pour émuler la fonctionnalité de JSON_TABLE.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0010¶
Les clauses de partitions sont gérées par Snowflake. Une correction manuelle est nécessaire.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Critique
Description¶
Cet avertissement apparaît lorsque les clauses PARTITION et SUBPARTITION apparaissent dans une requête. Snowflake gère automatiquement les partitions.
Exemple de code¶
Code d’entrée :¶
SELECT * FROM table1 PARTITION(col1);
Code généré :¶
SELECT * FROM
table1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0010 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE. IT REQUIRES MANUAL FIX ***/!!!
PARTITION(col1);
Meilleures pratiques¶
Une modification manuelle est nécessaire pour obtenir une fonctionnalité équivalente dans Snowflake. Une condition
WHEREest nécessaire pour filtrer les lignes de la partition spécifique. Cependant, avec cette solution de contournement, les performances sont affectées.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0011¶
Le paramètre de format n’est pas pris en charge.
Gravité¶
Medium
Description¶
Le paramètre de format n’est actuellement pas pris en charge par Snowflake pour les fonctions de conversion dans certains cas. Par exemple, lorsque « MONTH » ou « DAY » est utilisé dans le format DATE ou TIMESTAMP.
"MONTH/DD/YYYY" or "MM/DAY/YY" ...
Un autre scénario est lorsque vous travaillez avec la fonction CAST en utilisant NUMBER. Actuellement, SnowFlake doit avoir 4 arguments pour afficher la partie décimale. Pour l’instant, le code de sortie n’offre pas tous les arguments nécessaires pour SnowFlake. Vous devez ajouter les autres arguments pour la fonction TO_NUMBER.
Exemple de code¶
Code d’entrée :¶
SELECT CAST('12.48' AS NUMBER, '99.99') FROM DUAL;
Code généré :¶
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 généré :¶
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;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0013¶
Le paramètre NLS n’est pas pris en charge.
Gravité¶
Medium
Description¶
Le paramètre NLS n’est actuellement pas pris en charge pour les fonctions suivantes :
TOCHAR
TODATE
TONUMBER
TOTIMESTAMP
CAST
Exemple de code¶
Code d’entrée :¶
SELECT TO_NUMBER('-AusDollars100','9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''') "Amount" FROM DUAL;
Code généré :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0013 - NLS PARAMETER ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''' NOT SUPPORTED ***/!!!
TO_NUMBER('-AusDollars100', '9G999D99') "Amount" FROM DUAL;
SSC-EWI-OR0014¶
NLSSORT non prise en charge.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Medium
Description¶
La fonction NLSSORT n’est pas prise en charge actuellement dans le corps d’une sélection.
Exemple de code¶
Code d’entrée :¶
SELECT NLSSORT(name, 'NLS_SORT = ENGLISH') FROM products;
Code généré :¶
// SnowConvert AI Helpers Code section is omitted.
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0014 - FUNCTION NLSSORT IS NOT SUPPORTED ***/!!!
NLSSORT(name, 'NLS_SORT = ENGLISH') FROM
products;
Meilleures pratiques¶
La fonction NLSSORT est convertie en fonction définie par l’utilisateur (UDF/Stub). Vous pouvez donc la modifier pour émuler la fonctionnalité.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0016¶
XML n’est pas pris en charge.
Gravité¶
Medium
Description¶
Les fonctions XML associées suivantes ne sont pas prises en charge :
EXTRACT
EXTRACTVALUE
XMLSEQUENCE
XMLTYPE
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 généré :¶
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>')));
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0020¶
Les valeurs négatives ne sont pas prises en charge pour la fonction.
Gravité¶
Medium
Description¶
Snowflake ne prend pas en charge les valeurs négatives pour la fonction, ce qui entraînera un comportement différent lors de l’exécution.
Exemple de code¶
Code d’entrée :¶
SELECT INSTR('CORPORATE FLOOR','OR', -3, 2) FROM DUAL;
Code généré :¶
SELECT
REGEXP_INSTR('CORPORATE FLOOR','OR', -3, 2) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0020 - NEGATIVE VALUES NOT SUPPORTED FOR FUNCTION ***/!!! FROM DUAL;
Meilleures pratiques¶
Créez une fonction définie par l’utilisateur qui peut gérer le paramètre négatif ou cherchez une autre alternative.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0023¶
La fonction AGGREGATE n’est pas prise en charge.
Gravité¶
Élevé
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cette erreur est ajoutée lorsqu’une fonction d’agrégation comme
DENSE_RANK()
RANK()
PERCENT_RANK()
CUME_DIST()
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 généré :¶
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;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0026¶
ROWID n’est pas pris en charge.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Medium
Description¶
L’instruction ROWID n’est pas prise en charge actuellement.
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;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0029¶
DEFAULT ON CONVERSION ERROR n’est pas pris en charge.
Description¶
L’erreur de conversion par défaut n’est pas prise en charge dans Snowflake.
Exemple de code¶
Code d’entrée :¶
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
Code généré :¶
SELECT
PUBLIC.TO_NUMBER_UDF('2,00', 0) "Value" FROM DUAL;
Meilleures pratiques¶
Vous pouvez créer une UDF pour émuler le comportement de la valeur
DEFAULTON CONVERSION ERROR.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0030¶
L’instruction KEEP utilisée dans la fonction d’agrégation n’est pas prise en charge.
Gravité¶
Medium
Description¶
Cette erreur semble annoncer que l’instruction KEEP utilisée pour indiquer que seules les premières ou dernières valeurs de la fonction d’agrégation seront renvoyées n’est pas prise en charge.
Exemple de code¶
Code d’entrée :¶
SELECT
department_id,
MIN(salary) KEEP (
DENSE_RANK FIRST
ORDER BY
commission_pct
) "Worst"
FROM
employees;
Code généré :¶
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;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0031¶
Le paramètre SYS_CONTEXT n’est pas pris en charge.
Gravité¶
Faible
Description¶
Cette erreur se produit lorsqu’un paramètre de fonction SYS_CONTEXT n’est pas pris en charge. Snowflake prend en charge des fonctions contextuelles similaires. Consultez la page pour plus d’informations.
Exemple de code¶
Code d’entrée :¶
SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Code généré :¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0031 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE ***/!!!
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Meilleures pratiques¶
La fonction est convertie en fonction définie par l’utilisateur(stub). Vous pouvez donc la modifier pour émuler le comportement du paramètre SYS_CONTEXT.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0032¶
Le paramètre avec le format spécifié n’est pas pris en charge.
Gravité¶
Medium
Description¶
Cette erreur se produit lorsqu’un paramètre dans une fonction n’est pas pris en charge.
Exemple de code¶
Code d’entrée :¶
SELECT TO_CHAR(DATE '1998-12-25', 'AM') FROM DUAL;
Code généré :¶
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;
Meilleures pratiques¶
La fonction est convertie en fonction définie par l’utilisateur(stub). Vous pouvez donc la modifier pour émuler le comportement du paramètre.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0033¶
La déclaration PL/SQL dans WITH n’est pas prise en charge.
Gravité¶
Medium
Description¶
Les déclarations PL/SQL dans les instructions WITH ne sont 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 généré :¶
// SnowConvert AI 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;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0035¶
La fonction Table n’est pas prise en charge lorsqu’elle est utilisée sous la forme d’une collection d’expressions.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Medium
Description¶
La fonction TABLE n’est pas prise en charge dans Snowflake lorsqu’elle est utilisée sous la forme d’une collection d’expressions.
Exemple de code¶
Code d’entrée :¶
SELECT
TABLE2.COLUMN_VALUES
FROM TABLE1 i, TABLE(i.groups) TABLE2;
Code généré :¶
// SnowConvert AI 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;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0036¶
Problèmes de résolution des types. L’opération arithmétique peut ne pas se comporter correctement entre la chaîne et la date.
Gravité¶
Faible
Description¶
Ce problème se produit lorsqu’une opération arithmétique peut ne pas se comporter correctement entre deux types de données spécifiques.
Exemple de code¶
Code d’entrée :¶
SELECT
SYSDATE,
SYSDATE + '1',
SYSDATE + 'A'
from
dual;
Code généré :¶
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;
Note
Notez que l’opération entre une chaîne et une date peut ne pas se comporter correctement.
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0038¶
Suppression de la clause de recherche de l’instruction with element.
Gravité¶
Faible
Description¶
La search_clause est utilisée pour définir l’ordre dans lequel les lignes sont traitées dans une instruction SELECT. Cette fonctionnalité permet un parcours personnalisé des données, garantissant que les résultats sont renvoyés dans une séquence spécifique en fonction des critères spécifiés. Cependant, il est important de noter que ce comportement, caractérisé par la search_clause, n’est pas pris en charge dans Snowflake.
Dans les bases de données telles que Oracle, la search_clause est couramment utilisée en conjonction avec des requêtes récursives ou des expressions de table communes (CTEs) pour influencer la séquence dans laquelle les données hiérarchiques sont explorées. En désignant une colonne ou un ensemble de colonnes spécifique dans la search_clause, vous pouvez contrôler le parcours en profondeur d’abord ou en largeur d’abord de la hiérarchie, ce qui a un impact sur l’ordre dans lequel les lignes sont traitées.
Dans Snowflake, un message search_clause sera généré, et la search_clause sera ensuite supprimée.
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 généré :¶
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 autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0039¶
La clause NoCycle n’est pas prise en charge dans Snowflake.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Faible
Description¶
Ce message s’affiche lorsque SnowConvert AI trouve une requête avec une clause NOCYCLE, qui n’est pas prise en charge dans Snowflake.
Cette clause indique lorsqu’il existe une récursivité.
Pour plus de détails, consultez la documentation sur la fonctionnalité de la clause.
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 généré :¶
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;
Meilleures pratiques¶
S’il existe des cycles dans la hiérarchie des données, vous pouvez examiner cet article pour les gérer.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
Veuillez examiner le lien suivant pour une solution de contournement manuelle : https://community.snowflake.com/s/article/NOCYCLE-workaround
SSC-EWI-OR0042¶
La clause Model n’est pas prise en charge.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Faible
Description¶
Ce message s’affiche lorsque SnowConvert AI trouve une requête avec une clause MODEL, qui n’est pas prise en charge dans Snowflake.
Exemple de code¶
Code d’entrée :¶
SELECT
employee_id,
salary
FROM
employees
MODEL
DIMENSION BY (employee_id)
MEASURES (salary)
();
Code généré :¶
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)
();
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0045¶
Types de conversion L et FML non pris en charge
Gravité¶
Medium
Description¶
Ce problème se produit lorsque vous tentez une conversion en utilisant les formats FML ou L, qui ne sont pas applicables dans Snowflake. Le code est donc commenté et ce message est ajouté.
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 généré :¶
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;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0046¶
La syntaxe Alter Table n’est pas applicable dans Snowflake.
Note
Ce EWI est obsolète. Veuillez vous référer à la documentation SSC-EWI-0109
Gravité¶
Medium
Description¶
La syntaxe Alter Table utilisée n’est pas applicable dans Snowflake. Le code est donc commenté et ce message est ajouté.
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 généré :¶
!!!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;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0047¶
TO_NCHAR transformée en TO_VARCHAR. Il se peut qu’elle ne soit pas compilable dans Snowflake.
Gravité¶
Faible
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cet avertissement est ajouté lorsque la fonction TO_NCHAR a été trouvée et a été transformée en fonction TO_VARCHAR.
Il existe plusieurs cas où la transformation provoque une erreur de compilation, ou la sortie n’est pas la même.
Exemple de code¶
Code d’entrée :¶
select TO_NCHAR(sysdate,'DY','nls_date_language=english') from dual
Code généré :¶
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;
L’exemple ci-dessus entraînera une erreur s’il est utilisé dans Snowflake.
Tous les cas ne provoquent pas d’erreurs.
Code d’entrée :¶
SELECT TO_NCHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
Code généré :¶
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;
Le dernier exemple ne provoque pas d’erreur dans Snowflake, et la sortie est équivalente si elle est exécutée.
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0049¶
Les constantes de paquet dans le paquet avec état ne sont pas encore prises en charge.
Gravité¶
Critique
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cet avertissement est ajouté lorsqu’il existe un membre d’un paquet avec état qui n’est pas encore pris en charge.
Cette fonctionnalité devrait être disponible à l’avenir.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PACKAGE MY_PACKAGE
AS
TYPE COLLECTIONTYPEDEFINITION IS TABLE OF BULKCOLLECTTABLE%ROWTYPE;
END;
Code généré :¶
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;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0050¶
Input Expression hors plage
Gravité¶
Medium
Description¶
Ce problème se produit lorsque vous essayez de convertir une valeur d’entrée qui est hors plage. Cela signifie que les valeurs de précision ne sont pas applicables dans Snowflake. Le code est donc commenté et ce message est ajouté.
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 généré :¶
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;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0051¶
PRAGMA EXCEPTION_INIT n’est pas pris en charge.
Gravité¶
Faible
Description¶
Cet INIT est ajouté lorsque la fonction PRAGMA_EXCEPTION EWI est invoquée dans une procédure. Le nom des exceptions et le code SQL des exceptions est défini dans la fonction RAISE. Lorsqu’il est converti dans l’Exécution de scripts Snowflake, le code SQL est ajouté à la déclaration des exceptions. Cependant, certaines valeurs de code peuvent être non valides dans l’Exécution de scripts Snowflake.
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 généré :¶
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;
$$;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0052¶
La déclaration des exceptions est gérée par la fonction Raise.
Gravité¶
Faible
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Note
Générez des procédures et des macros à l’aide de JavasScript comme langage cible en ajoutant l’indicateur -t JavaScript ou --PLTargetLanguage JavaScript suivant.
Description¶
Les exceptions peuvent être définies dans les deux langages, Oracle et Snowflake, mais la fonction RAISE est conçue pour effectuer la déclaration, l’attribution et l’envoi de l’erreur. C’est pourquoi la déclaration de l’exception est commentée et l’avertissement est affiché.
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 généré :¶
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 AI 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
;
$$;
Note
Certaines parties des codes de sortie sont omises à des fins de lisibilité.
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0053¶
Format d’entrée incorrect
Gravité¶
Medium
Description¶
Ce problème se produit lorsque vous tentez une conversion en utilisant un format d’entrée incorrect. Le code est donc commenté et ce message est ajouté.
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 généré :¶
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;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0057¶
La transformation pour la procédure ou la fonction imbriquée n’est pas prise en charge dans ce scénario.
Gravité¶
Critique
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
La traduction de fonctions imbriquées dans d’autres fonctions ou procédures n’est pas prise en charge. De même, les procédures imbriquées dans des fonctions ou des blocs anonymes ne sont actuellement pas prises en charge.
Toutefois, les procédures imbriquées dans d’autres procédures ou paquets sont prises en charge. Pour plus de détails, consultez la documentation sur les procédures imbriquées.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE function FOO1 RETURN INTEGER AS
FUNCTION FOO2 RETURN INTEGER AS
BEGIN
RETURN 123;
END;
BEGIN
RETURN FOO2() + 456;
END;
Code généré :¶
!!!RESOLVE EWI!!! /*** SSC-EWI-0068 - 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": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
DECLARE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0057 - TRANSFORMATION FOR NESTED FUNCTION IS NOT SUPPORTED IN THIS SCENARIO ***/!!!
FUNCTION FOO2 RETURN INTEGER AS
BEGIN
RETURN 123;
END;
BEGIN
RETURN FOO2() + 456;
END;
$$;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0067¶
La définition de plusieurs contraintes dans une seule instruction n’est pas prise en charge dans Snowflake.
Gravité¶
Medium
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
La définition de plusieurs contraintes dans une seule instruction ALTER TABLE n’est pas prise en charge dans Snowflake.
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);
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0068¶
La valeur de début de la séquence dépasse la valeur maximale autorisée par Snowflake.
Gravité¶
Medium
Description¶
Cette erreur apparaît lorsque la valeur de l’instruction START WITH dépasse la valeur maximale autorisée par Snowflake. Ce que Snowflake dit à propos de la valeur de départ est : Spécifie la première valeur retournée par la séquence. Les valeurs prises en charge sont n’importe quelle valeur qui peut être représentée par un entier de complément de deux de 64 bits (de -2^63 à 2^63-1). Ainsi, selon ce qui a été mentionné précédemment, la valeur maximale autorisée est 9223372036854775807 pour les nombres positifs et 9223372036854775808 pour les nombres négatifs.
Exemple de code¶
Code d’entrée :¶
CREATE SEQUENCE SEQUENCE1
START WITH 9223372036854775808;
CREATE SEQUENCE SEQUENCE2
START WITH -9223372036854775809;
Code généré :¶
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"}}';
Meilleures pratiques¶
Il peut être recommandé de simplement réinitialiser la séquence et de modifier également son utilisation. NOTE : la colonne cible doit disposer d’un espace suffisant pour contenir cette valeur.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0069¶
La propriété CURRVAL de la séquence n’est pas prise en charge dans Snowflake.
Gravité¶
Medium
Description¶
La propriété CURRVAL de la séquence n’est pas prise en charge dans Snowflake.
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;
Meilleures pratiques¶
Vous pouvez consulter ce lien pour voir ce que Snowflake suggère pour gérer les situations où la propriété CURRVAL est utilisée.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0070¶
Opération binaire non prise en charge
Gravité¶
Medium
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Une opération binaire n’est pas prise en charge actuellement. Une fonction définie par l’utilisateur est ajoutée.
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;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0071¶
Set Quantifier non pris en charge
Gravité¶
Faible
Description¶
Le quantificateur « all » n’est pas pris en charge dans Snowflake. Le modificateur est supprimé du code source et un avertissement est ajouté. Le code résultant peut se comporter de manière inattendue.
Exemple de code¶
Code d’entrée :¶
SELECT location_id FROM locations
MINUS ALL
SELECT location_id FROM departments;
Code généré :¶
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 supprimeront toujours les valeurs en double.
Meilleures pratiques¶
Vérifiez les alternatives dans Snowflake pour émuler la fonctionnalité du quantificateur « all ». Vous trouverez ci-dessous une solution de contournement pour
MINUS ALLetEXCEPT 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
);
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0072¶
Membre procédural non pris en charge
Gravité¶
Medium
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Note
Générez des procédures et des macros à l’aide de JavasScript comme langage cible en ajoutant l’indicateur -t JavaScript ou –PLTargetLanguage JavaScript suivant.
Description¶
Un membre procédural n’est actuellement pas pris en charge. Exemple de membres procéduraux :
Déclarations constantes.
Déclarations de curseurs.
Déclarations pragmatiques.
Déclarations de variables.
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 AI Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0072 - PROCEDURAL MEMBER PRAGMA DECLARATION NOT SUPPORTED. ***/!!!
/* PRAGMA AUTONOMOUS_TRANSACTION */
;
null;
$$;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0075¶
Balises dans les instructions non prises en charge
Gravité¶
Medium
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Note
Générez des procédures et des macros à l’aide de JavasScript comme langage cible en ajoutant l’indicateur -t JavaScript ou –PLTargetLanguage JavaScript suivant.
Description¶
Les balises dans les instructions ne sont pas prises en charge pour faire référence à un bloc de code.
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:¶
--Additional Params: -t JavaScript
--** 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": "07/16/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
// REGION SnowConvert AI Helpers Code
var RAISE = function (code,name,message) {
message === undefined && ([name,message] = [message,name])
var error = new Error(message);
error.name = name
SQLERRM = `${(SQLCODE = (error.code = code))}: ${message}`
throw error;
};
var SQL = {
FOUND : false,
NOTFOUND : false,
ROWCOUNT : 0,
ISOPEN : false
};
var _RS, _ROWS, SQLERRM = "normal, successful completion", SQLCODE = 0;
var getObj = (_rs) => Object.assign(new Object(),_rs);
var getRow = (_rs) => (values = Object.values(_rs)) && (values = values.splice(-1 * _rs.getColumnCount())) && values;
var fetch = (_RS,_ROWS,fmode) => _RS.getRowCount() && _ROWS.next() && (fmode ? getObj : getRow)(_ROWS) || (fmode ? new Object() : []);
var EXEC = function (stmt,binds,opts) {
try {
binds = !(arguments[1] instanceof Array) && ((opts = arguments[1]) && []) || (binds || []);
opts = opts || new Object();
binds = binds ? binds.map(fixBind) : binds;
_RS = snowflake.createStatement({
sqlText : stmt,
binds : binds
});
_ROWS = _RS.execute();
if (opts.sql !== 0) {
var isSelect = stmt.toUpperCase().trimStart().startsWith("SELECT");
var affectedRows = isSelect ? _RS.getRowCount() : _RS.getNumRowsAffected();
SQL.FOUND = affectedRows != 0;
SQL.NOTFOUND = affectedRows == 0;
SQL.ROWCOUNT = affectedRows;
}
if (opts.row === 2) {
return _ROWS;
}
var INTO = function (opts) {
if (opts.vars == 1 && _RS.getColumnCount() == 1 && _ROWS.next()) {
return _ROWS.getColumnValue(1);
}
if (opts.rec instanceof Object && _ROWS.next()) {
var recordKeys = Object.keys(opts.rec);
Object.assign(opts.rec,Object.fromEntries(new Map(getRow(_ROWS).map((element,Index) => [recordKeys[Index],element]))))
return opts.rec;
}
return fetch(_RS,_ROWS,opts.row);
};
var BULK_INTO_COLLECTION = function (into) {
for(let i = 0;i < _RS.getRowCount();i++) {
FETCH_INTO_COLLECTIONS(into,fetch(_RS,_ROWS,opts.row));
}
return into;
};
if (_ROWS.getRowCount() > 0) {
return _ROWS.getRowCount() == 1 ? INTO(opts) : BULK_INTO_COLLECTION(opts);
}
} catch(error) {
RAISE(error.code,error.name,error.message)
}
};
var FETCH_INTO_COLLECTIONS = function (collections,fetchValues) {
for(let i = 0;i < collections.length;i++) {
collections[i].push(fetchValues[i]);
}
};
var IS_NULL = (arg) => !(arg || arg === 0);
var formatDate = (arg) => (new Date(arg - (arg.getTimezoneOffset() * 60000))).toISOString().slice(0,-1);
var fixBind = function (arg) {
arg = arg instanceof Date ? formatDate(arg) : IS_NULL(arg) ? null : arg;
return arg;
};
// END REGION
/* -- procedure body
EXIT loop_b */
// procedure body
// procedure body
;
// procedure body continuation
;
$$;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0076¶
Paquet intégré non pris en charge.
Gravité¶
Medium
Description¶
La traduction pour les paquets intégrés n’est pas prise en charge 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 généré :¶
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;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0078¶
Impossible d’analyser l’instruction SQL dynamique à l’intérieur de l’instruction Execute Immediate.
Gravité¶
Medium
Description¶
SnowConvert AI n’a pas pu analyser l’instruction SQL dynamique à l’intérieur de l’instruction Execute Immediate.
Note
Générez des procédures et des macros à l’aide de JavasScript comme langage cible en ajoutant l’indicateur -t JavaScript ou --PLTargetLanguage JavaScript suivant.
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 AI Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0078 - UNABLE TO PARSE DYNAMIC SQL STATEMENT ***/!!!
/*EXEC(`NOT A VALID SQL STATEMENT`)*/
;
$$;
Meilleures pratiques¶
Vérifiez l’instruction SQL dynamique pour toute erreur de syntaxe.
Examinez la documentation SnowConvert AI pour voir si l’instruction n’est toujours pas prise en charge.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0082¶
Impossible de convertir une expression d’attribut de type imbriqué.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Medium
Description¶
Ce message d’erreur apparaît lorsqu’une requête, telle qu’une sélection, tente d’accéder à un attribut dans une colonne qui a été défini comme un type. Ceux-ci ne peuvent pas être convertis automatiquement, mais ils peuvent être rapidement convertis 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 généré :¶
!!!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": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
;
CREATE OR REPLACE VIEW my_table_view
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
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 column1.property1.attribute1,
column1.property2
FROM
my_table;
Meilleures pratiques¶
Le code peut être corrigé manuellement en remplaçant l’accesseur “.” par “:” chaque fois qu’une colonne de type est accessible.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0087¶
Échec de la mise en ordre des jointures extérieures
Gravité¶
Faible
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Ce problème survient lorsqu’une erreur se produit lors de la réorganisation des nouvelles clauses ANSI JOIN dans une requête qui comportait auparavant des jointures extérieures avec l’opérateur (+). Une requête avec un cycle de tables se joignant dans la clause WHERE peut provoquer ce problème.
Lorsque cet EWI est présent, les clauses JOIN peuvent ne pas fonctionner correctement en raison de leur ordre.
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 généré :¶
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;
Assurez-vous que la requête est valide et ne possède pas de tables qui sont jointes les unes aux autres.
Si le problème persiste, essayez de qualifier le nom de chaque colonne dans la clause WHERE avec le nom de la table.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0089¶
Le paramètre de correspondance REGEXP_LIKE_UDF peut ne pas se comporter correctement.
Note
Cet EWI est obsolète. Veuillez vous référer à la documentation SSC-FDM-OR0044.
Gravité¶
Faible
Description¶
Cet avertissement apparaît lorsque la condition REGEXP_LIKE d’Oracle vient avec le troisième paramètre (paramètre de correspondance). Cet avertissement est ajouté car l’REGEXP_LIKE_UDF utilisée pour remplacer la condition REGEXP_LIKE ne reconnaît pas tous les caractères utilisés par le paramètre de correspondance, de sorte que le résultat de la requête dans Snowflake peut ne pas être équivalent à 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 généré :¶
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;
Lorsque la condition
REGEXP_LIKEvient avec l’un des caractères non pris en charge par la fonction définie par l’utilisateur, une solution possible peut consister à modifier l’expression régulière afin de simuler le comportement du caractère manquant dans le paramètre de correspondance. Pour en savoir plus sur les caractères non pris en charge, consultez la documentation REGEXP_LIKE_UDF.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0090¶
La jointure extérieure non ANSI possède un prédicat Between non valide.
Gravité¶
Medium
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Ce problème se produit lorsqu’il existe une OUTER JOIN avec l’opérateur (+) à l’intérieur d’une clause BETWEEN qui ne peut pas être exécutée dans Snowflake. Cela se produit généralement lorsque plusieurs tables sont utilisées dans l’intervalle de la clause BETWEEN.
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 généré :¶
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(+);
Meilleures pratiques¶
Modifiez manuellement la jointure extérieure en syntaxe ANSI.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0092¶
L’échelle négative du type de données NUMBER a été supprimée de la sortie.
Gravité¶
Faible
Description¶
Ce problème se produit lorsqu’un NUMBER avec une échelle négative est utilisé pour appliquer un arrondi au NUMBER. Snowflake ne prend pas en charge cette fonctionnalité, et ce message est utilisé pour indiquer que l’échelle a été supprimée.
Exemple de code¶
Code d’entrée Oracle :¶
Requêtes¶
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;
Résultat¶
COL1|COL2|COL3|
----+----+----+
555| 560| 600|
Code généré :¶
Requêtes¶
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;
Résultat¶
|COL1|COL2|COL3|
|----|----|----|
|555 |555 |555 |
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0095¶
L’opération entre le type d’intervalle et le type de date n’est pas prise en charge
Gravité¶
Faible
Description¶
INTERVAL YEAR TO MONTH et INTERVAL DAY TO SECOND ne sont pas un type de données pris en charge, ils sont transformés en VARCHAR(20). Par conséquent, toutes les opérations arithmétiques entre les types de date et les colonnes de type intervalle originales ne sont pas prises en charge.
De plus, les opérations entre un type d’intervalle et un type de date (dans cet ordre) ne sont pas prises en charge dans Snowflake. et ces opérations utilisent aussi cet 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 généré :¶
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;
Meilleures pratiques¶
Mettez en œuvre l’UDF pour simuler le comportement d’Oracle.
Extrayez la valeur déjà transformée qui a été stockée dans la colonne lors de la migration, et utilisez-la comme un [intervalle constant] de Snowflake (https://docs.snowflake.com/fr/sql-reference/data-types-datetime.html#interval-constants) lorsque cela est possible.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
¶
SSC-EWI-OR0097¶
Les propriétés des procédures ne sont pas prises en charge dans les procédures Snowflake.
Gravité¶
Faible
Description¶
Les propriétés CREATE PROCEDURE supplémentaires d’Oracle ne sont pas nécessaires et n’ont pas d’équivalent pour CREATE PROCEDURE de Snowflake.
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 généré :¶
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;
$$;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0099¶
Le code d’exception dépasse la limite de l’Exécution de scripts Snowflake.
Gravité¶
Faible
Description¶
Cet EWI apparaît lorsqu’un code d’erreur de déclaration d’exception dépasse les limites du nombre d’exceptions de l’Exécution de scripts Snowflake. Le nombre doit être un entier 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 généré :¶
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;
$$;
Meilleures pratiques¶
Vérifiez si le code d’exception se situe entre les limites autorisées par l’Exécution de scripts Snowflake. Si non, remplacez-le par un autre numéro d’exception disponible.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0100¶
La clause For Loop avec plusieurs conditions n’est actuellement pas prise en charge par l’Exécution de scripts Snowflake. Seule la première condition est utilisée.
Gravité¶
Faible
Description¶
Oracle autorise plusieurs conditions dans une seule FOR LOOP. Cependant, l’Exécution de scripts Snowflake n’autorise qu’une seule condition par FOR LOOP. Seule la première condition est migrée, et les autres sont ignorées lors de la transformation.
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 généré :¶
CREATE OR REPLACE PROCEDURE P3 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
BEGIN
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0100 - FOR LOOP WITH MULTIPLE CONDITIONS IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN REVERSE 1 TO 3
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
LOOP
NULL;
END LOOP;
END;
$$;
Meilleures pratiques¶
Séparez les
FOR LOOPen différentes boucles ou réécrivez la condition.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0101¶
La clause For Loop spécifique n’est actuellement pas prise en charge par l’Exécution de scripts Snowflake.
Gravité¶
Faible
Description¶
Oracle autorise les clauses supplémentaires dans la condition FOR LOOP. Par exemple, les clauses BY, WHILE et WHEN. Les clauses WHILE et WHEN autorisent toutes deux une expression booléenne supplémentaire comme condition. De son côté, la clause BY permet un incrément progressif dans l’itération. Ces clauses supplémentaires ne sont pas prises en charge dans l’Exécution de scripts Snowflake et sont ignorées lors de la transformation.
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 généré :¶
CREATE OR REPLACE PROCEDURE P2 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
BEGIN
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "WHILE" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN 1 TO 10
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
LOOP
NULL;
END LOOP;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "BY" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
FOR i IN 5 TO 15
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
LOOP
NULL;
END LOOP;
END;
$$;
Meilleures pratiques¶
Séparez les
FOR LOOPen différentes boucles ou réécrivez la condition.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0103¶
Le format For Loop n’est actuellement pas pris en charge par l’Exécution de scripts Snowflake.
Gravité¶
Élevé
Description¶
Oracle autorise différents types de conditions pour une clause FOR LOOP. Il prend en charge les expressions booléennes, les collections, les enregistrements… Cependant, l’exécution de scripts Snowflake ne prend en charge que FOR LOOP avec des entiers définis en tant que limites. Tous les autres formats sont marqués comme non pris en charge et nécessitent des opérations manuelles supplémentaires pour être transformés.
Clauses de contrôle de l’itération Oracle qui ne sont pas prises en charge dans FOR LOOP de Snowflake :
single_expression_controlvalues_of_controlindices_of_controlpairs_of_control
Danger
cursor_iteration_control est actuellement marquée comme non prise en charge. La suppression des parenthèses dans l’expression devrait la transformer en CURSOR FOR LOOP.
Origine :
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 généré :¶
CREATE OR REPLACE PROCEDURE P3 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
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 ***/!!!
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
!!!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
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
LOOP
NULL;
END LOOP;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0103 - FOR LOOP FORMAT IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
FOR i IN VALUES OF :l_employee_values
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
LOOP
NULL;
END LOOP;
END;
$$;
Meilleures pratiques¶
Réécrivez la condition
FOR LOOPou utilisez un autre type deLOOPpour simuler le comportement.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0104¶
Variable de collection inutilisable
Gravité¶
Élevé
Description¶
Les collections d’Oracle ne sont actuellement pas prises en charge par SnowConvert AI. Toutes les variables de types de collections et leurs utilisations seront commentées.
Note
Générez des procédures et des macros à l’aide de JavasScript comme langage cible en ajoutant l’indicateur -t JavaScript ou --PLTargetLanguage JavaScript suivant.
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 AI 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;
$$;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0105¶
Une opération supplémentaire est nécessaire pour l’utilisation de la colonne BFILE. La fonction BUILD_STAGE_URL est une solution de contournement recommandée.
Gravité¶
Faible
Description¶
La transformation pour le type de données BFILE est VARCHAR. Cependant, la traduction pour les fonctions intégrées d’Oracle utilisées pour interagir avec les types BFILE n’est actuellement pas prise en charge. La colonne est migrée vers VARCHAR afin d’enregistrer le chemin et le nom du fichier. Consultez la documentation BFILENAME_UDF pour plus d’informations.
Note
La fonction BUILD_STAGE_FILE_URL est une solution de contournement recommandée pour travailler avec des fichiers dans Snowflake. Elle renverra un lien vers le fichier spécifié, stocké dans une zone de préparation. Consultez 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 généré :¶
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') );
Meilleures pratiques¶
Utilisez
BUILD_STAGE_FILE_URLet les autres fonctions de fichier pour gérer les fichiers.
Requête 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') );
Résultat¶
URL |
------------------------------------------------------------------------------------------------------+
https://thecompany.snowflakecomputing.com/api/files/CODETEST/PUBLIC/MY_STAGE/%2Fmydirectory%2Fmyfile.jpg|
Note
Cette fonction fonctionne avec différentes options de stockage dans le Cloud, mais pour des informations concernant l’utilisation de fichiers locaux avec des zones de préparation, consultez cette documentation.
Modifiez le type de données en un type pris en charge.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0108¶
L’instruction d’attribution suivante n’est pas prise en charge par l’Exécution de scripts Snowflake.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Medium
Description¶
Certains types de variables Oracle n’ont pas de traduction directe dans Snowflake. Actuellement, la transformation pour les variables de type curseur, collection, enregistrement et définies par l’utilisateur, ainsi que pour les espaces réservés, les objets et les paramètres de sortie, n’est pas prise en charge par l’Exécution de scripts Snowflake.
La conversion de ces variables en [types de données semi-structurées] Snowflake (https://docs.snowflake.com/fr/sql-reference/data-types-semistructured.html#semi-structured-data-types) pourrait servir de solution de contournement dans certains scénarios.
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 généré :¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "employees" **
CREATE OR REPLACE PROCEDURE pinvalidassign (out_parameter OUT NUMBER(38, 18))
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/16/2025", "domain": "no-domain-provided" }}'
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;
END;
$$;
Meilleures pratiques¶
Modifiez le type de données des variables ou essayez de simuler le comportement en utilisant des [types de données semi-structurées] Snowflake (https://docs.snowflake.com/fr/sql-reference/data-types-semistructured.html#semi-structured-data types).
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0109¶
Les expressions en tant qu’arguments de la clause Using ne sont pas prises en charge par l‘Exécution de scripts Snowflake.
Gravité¶
Medium
Description¶
Oracle prend en charge l’utilisation d’expressions comme arguments dans toute clause USING pour les instructions EXECUTE IMMEDIATE. Cette fonctionnalité n’est pas prise en charge par l’Exécution de scripts Snowflake.
L’Exécution de scripts Snowflake prend en charge les expressions de variables, et il est possible de remplacer l’expression en l’attribuant manuellement à une variable (voir 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 généré :¶
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 :¶
Remplacer cette procédure par celle ci-dessus résoudra l’erreur de compilation et donnera les mêmes résultats qu’Oracle.
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;
$$;
Meilleures pratiques¶
Les procédures peuvent être migrées manuellement en ajoutant une variable, puis en attribuant l’expression à cette variable.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0110¶
La clause For Update n’est pas prise en charge dans Snowflake.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Sévérité ¶
Élevé
Description ¶
Il n’existe pas d’équivalent pour la clause FOR UPDATE dans l’Exécution de scripts Snowflake. Un EWI est donc ajouté et la clause est commentée.
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 généré :¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "f_employee" **
CREATE OR REPLACE PROCEDURE for_update_clause ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
DECLARE
update_record OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
--** SSC-PRF-0009 - PERFORMANCE REVIEW - CURSOR USAGE **
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;
$$;
Meilleures pratiques¶
Gérez la mise à jour des colonnes dans la requête
UPDATE/DELETE. Pour plus de détails, consultez SSC-EWI-OR0136.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0116¶
Les opérations entre les intervalles ne sont pas prises en charge.
Gravité¶
Medium
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cette erreur est ajoutée lorsqu’il existe une opération arithmétique dont les opérandes ne sont que des intervalles. Ce type d’opération n’est pas pris en charge par Snowflake.
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 généré :¶
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;
Meilleures pratiques¶
Selon l’endroit où se trouve l’opération, elle peut être déplacée et rendue valide en ajoutant des dates ou des horodatages.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0118¶
Les vues/tables intégrées ne sont pas prises en charge par Snowflake.
Gravité¶
Medium
Description¶
Oracle dispose d’un ensemble de vues et de tables intégrées qui ne sont pas présentes dans Snowflake. SnowConvert AI ajoute un message d’erreur aux requêtes et aux instructions qui utilisent ces éléments.
Exemple de code¶
Code d’entrée :¶
SELECT * FROM ALL_COL_COMMENTS;
SELECT * FROM (SELECT * FROM ALL_COL_COMMENTS);
Code généré :¶
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);
Meilleures pratiques¶
Certaines informations fournies par les vues intégrées d’Oracle peuvent être trouvées dans le [Schéma d’information] de Snowflake(https://docs.snowflake.com/fr/sql-reference/info-schema.html#snowflake-information-schema) ou en utilisant la commande SHOW.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0121¶
L’utilisation du paquet intégré DBMS_LOB.SUBSTR avec une colonne BFILE n’est pas prise en charge dans Snowflake.
Gravité¶
Medium
Description¶
Les colonnes BFILE d’Oracle sont migrées vers VARCHAR dans Snowflake. Le nom du fichier est stocké sous forme de chaîne dans la nouvelle colonne. Par conséquent, utiliser dans Snowflake une fonction SUBSTR sur la colonne migrée renverra une sous-chaîne du nom du fichier. De son côté, DBMS_LOB.SUBSTR d’Oracle renverra une sous-chaîne du contenu du fichier. Pour plus d’informations, examinez le type de données BFILE.
Exemple de code¶
Code d’entrée :¶
CREATE TABLE table1
(
bfile_column BFILE
)
SELECT
DBMS_LOB.SUBSTR(bfile_column, 15, 1)
FROM table1;
Code généré :¶
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;
Meilleures pratiques¶
Examinez la documentation sur le traitement des fichiers avec Snowflake ici.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0123¶
Connexions Database Link non prises en charge
Gravité¶
Medium
Description¶
Une référence de connexion à un lien de base de données a été supprimée du nom de l’objet, car les liens de base de données et leurs références ne sont pas pris en charge dans Snowflake. La seule partie conservée est le nom qui précède le caractère @.
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 généré :¶
---- 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;
Meilleures pratiques¶
Il est important de vérifier que tous les liens DB ont des noms différents. Si deux liens DB partagent le même nom et que le code est migré plusieurs fois, alors l’EWI peut modifier les informations en fonction du lien DB traité en premier.
Déplacez les objets de base de données depuis la référence du lien de base de données vers la même instance de base de données que celle utilisée dans Snowflake.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0126¶
Objet inutilisable, car son type personnalisé intégré n’est pas pris en charge
Gravité¶
Medium
Description¶
Cette erreur semble indiquer si un objet avec un type personnalisé intégré est utilisé.
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 généré :¶
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;
$$;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0128¶
L’attribut booléen du curseur n’est pas pris en charge.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Faible
Description¶
Ce message est utilisé pour indiquer qu’un attribut booléen du curseur n’est pas pris en charge dans SnowScript ou qu’il n’existe pas de transformation qui émule sa fonctionnalité dans SnowScript. Le tableau suivant indique les attributs booléens du curseur qui peuvent être émulés:
Attribut booléen du curseur |
Statut |
|---|---|
|
Peut être émulé |
|
Peut être émulé |
|
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 généré :¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "table1" **
CREATE OR REPLACE PROCEDURE cursor_attributes_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
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();
--** SSC-PRF-0009 - PERFORMANCE REVIEW - CURSOR USAGE **
my_cursor CURSOR
FOR
SELECT
OBJECT_CONSTRUCT( *) sc_cursor_record FROM
table1;
BEGIN
OPEN my_cursor;
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
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;
$$;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0129¶
L’attribut TYPE n’a pas pu être résolu.
Gravité¶
Faible
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cet avertissement apparaît lorsque l’élément référencé de l’attribut TYPE n’a pas pu être résolu et que le type de données de l’élément de référence n’a pas pu être obtenu. Ainsi, le type de données VARIANTsera attribué à la place.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE procedure01
IS
var1 table01.col1%TYPE;
BEGIN
NULL;
END;
Code généré :¶
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;
$$;
Meilleures pratiques¶
Vérifiez le type de données de l’élément référencé et remplacez-le manuellement dans l’attribut TYPE de l’élément de référence.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0133¶
La variable de curseur a déjà été attribuée.
Gravité¶
Medium
Description¶
Lorsqu’une instruction OPEN FOR est convertie, une attribution de curseur portant le même nom que la variable de curseur utilisée dans le code d’entrée est ajoutée avec d’autres instructions pour émuler sa fonctionnalité. Comme il est possible d’utiliser plusieurs instructions OPEN FOR avec la même variable de curseur, il existera plusieurs attributions de curseur portant le même nom dans le code de sortie. Laisser le code de sortie tel quel entraînera des erreurs de compilation lorsqu’il sera exécuté 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 généré¶
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 : l’instruction ci-dessous possède des utilisations du SQL dynamique.
Meilleures pratiques¶
Pour résoudre les erreurs de compilation du code de sortie, les attributions de curseur qui affichent le message SSC-EWI-OR0133 doivent être renommées.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0135¶
La période de conservation des données peut ne produire aucun résultat.
Gravité¶
Faible
Description¶
Si une requête est exécutée dans Snowflake à l’aide de Time Travel, elle peut ne renvoyer aucun résultat si la durée spécifiée n’est plus comprise dans la période de conservation des données. Nous vous recommandons de vous renseigner davantage sur Time Travel de Snowflake.
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 généré¶
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';
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0136¶
La clause Current Of n’est pas prise en charge dans Snowflake.
Gravité¶
Critique
Description¶
Certaines instructions comme UPDATE et DELETE peuvent utiliser une clause CURRENT OF dans la clause WHERE. Celle-ci n’est actuellement pas prise en charge par Snowflake.
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:¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "F_EMPLOYEE" **
CREATE OR REPLACE PROCEDURE proc_update_current_of ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/14/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
DECLARE
--** SSC-PRF-0009 - PERFORMANCE REVIEW - CURSOR USAGE **
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 : Problèmes de résolution des types. L’opération arithmétique peut ne pas se comporter correctement entre la chaîne et la date.
SSC-PRF-0004 : Cette instruction possède des utilisations de curseur For Loop.
SSC-EWI-OR0110 : la clause For Update n’est pas prise en charge dans Snowflake.
Meilleures pratiques¶
Reformulez la requête en requête
UPDATEouDELETEnormale, en spécifiant les colonnes dans la clauseWHERE. Tenez compte du fait que s’il existe des enregistrements en double dans la table, la requête peut les affecter plusieurs fois.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-OR0137¶
La référence à l’attribut Type peut ne pas être prise en charge. Elle a donc été transformée en type de données Variant.
Gravité¶
Critique
Description¶
TYPE ATTRIBUTE “TYPEUSED%TYPE” MIGHT BE UNSUPPORTED, SO IT WAS TRANSFORMED TO VARIANT
Exemple de code¶
Oracle :¶
CREATE OR REPLACE TABLE MYTABLE
(
LOG_ID URITYPE
);
CREATE OR REPLACE PROCEDURE some_procedure()
IS
L_MESSAGE MYTABLE.LOG_ID%TYPE;
BEGIN
NULL;
END;
Snowflake Scripting:¶
CREATE OR REPLACE TABLE MYTABLE
(
!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
LOG_ID URITYPE
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "10/01/2025", "domain": "no-domain-provided", "migrationid": "aqCZAdErg3K0P04NglqCCg==" }}'
;
CREATE OR REPLACE PROCEDURE some_procedure ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "10/01/2025", "domain": "no-domain-provided", "migrationid": "aqCZAdErg3K0P04NglqCCg==" }}'
EXECUTE AS CALLER
AS
$$
DECLARE
L_MESSAGE VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-OR0137 - TYPE ATTRIBUTE 'MYTABLE.LOG_ID%TYPE' MIGHT BE UNSUPPORTED, SO IT WAS TRANSFORMED TO VARIANT ***/!!!;
BEGIN
NULL;
END;
$$;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.