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.

  • START WITH LIMIT VALUE, qui est spécifique aux identity_options, ne peut être utilisée qu’avec ALTER TABLE MODIFY. Si vous spécifiez START WITH LIMIT 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 + INCREMENT BY integer pour les séquences croissances, ou le point culminant - INCREMENT BY integer pour les séquences décroissantes.

ALTER TABLE ORACLE

Exemple de code

Code d’entrée :
 CREATE SEQUENCE SEQUENCE1
  START WITH LIMIT VALUE;
Copy
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"}}';
Copy

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;
Copy
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;
$$;
Copy

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);
Copy
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);
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy
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);
Copy
Code généré :
 --!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
                                           ;
Copy

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;
Copy
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;
Copy

Note

Notez que « iw-iyyy » n’est pas un format pris en charge.

Meilleures pratiques

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;
Copy
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;
Copy

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);
Copy
Code généré :
 SELECT * FROM
table1
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0010 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE. IT REQUIRES MANUAL FIX ***/!!!
        PARTITION(col1);
Copy

Meilleures pratiques

  • Une modification manuelle est nécessaire pour obtenir une fonctionnalité équivalente dans Snowflake. Une condition WHERE est 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" ...

Copy

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;
Copy
Code généré :
 SELECT
TO_NUMBER('12.48', '99.99', 38, 2)
FROM DUAL;
Copy
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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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>')));
Copy
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>')));
Copy

Meilleures pratiques

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;
Copy
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;
Copy

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;
Copy
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;
Copy

Meilleures pratiques

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;
Copy
Snowflake Scripting:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0026 - ROWID NOT SUPPORTED ***/!!!
 QUERY_NAME.ROWID from
 TABLE1;
Copy

Meilleures pratiques

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;
Copy
Code généré :
 SELECT
PUBLIC.TO_NUMBER_UDF('2,00', 0) "Value" FROM DUAL;
Copy

Meilleures pratiques

  • Vous pouvez créer une UDF pour émuler le comportement de la valeur DEFAULT ON 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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

Meilleures pratiques

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)
();
Copy
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)
();
Copy

Meilleures pratiques

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
/
Copy
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;
$$;
Copy

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;
Copy
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
  ;
$$;
Copy

Note

Certaines parties des codes de sortie sont omises à des fins de lisibilité.

Meilleures pratiques

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;
Copy
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;
Copy

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;
Copy
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;
$$;
Copy

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);
Copy
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);
Copy

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;
Copy
 CREATE SEQUENCE SEQUENCE2
START WITH -9223372036854775809;
Copy
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"}}';
Copy
 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"}}';
Copy

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;
Copy
Snowflake Scripting:
 select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0069 - THE SEQUENCE CURRVAL PROPERTY IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
 seq1.currval from dual;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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 ALL et EXCEPT ALL.

 SELECT location_id FROM
(
    SELECT location_id, ROW_NUMBER()OVER(PARTITION BY location_id ORDER BY 1) rn
    FROM locations
    MINUS
    SELECT number_val, ROW_NUMBER()OVER(PARTITION BY location_id ORDER BY 1) rn
    FROM departments
);
Copy

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;
Copy
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;
$$;
Copy

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;
Copy
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
    ;
$$;
Copy

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;
Copy
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;
Copy

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;
Copy
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`)*/
    ;
$$;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy
  • 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;
Copy
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;
Copy
  • Lorsque la condition REGEXP_LIKE vient 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(+);
Copy
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(+);
Copy

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;
Copy
Résultat
COL1|COL2|COL3|
----+----+----+
 555| 560| 600|

Copy
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;
Copy
Résultat
 |COL1|COL2|COL3|
|----|----|----|
|555 |555 |555 |
Copy

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;
Copy
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;
Copy

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;
Copy
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;
$$;
Copy

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;
Copy
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;
$$;
Copy

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;
Copy
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;
$$;
Copy

Meilleures pratiques

  • Séparez les FOR LOOP en 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;
Copy
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;
$$;
Copy

Meilleures pratiques

  • Séparez les FOR LOOP en 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_control

  • values_of_control

  • indices_of_control

  • pairs_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;
Copy
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;
$$;
Copy

Meilleures pratiques

  • Réécrivez la condition FOR LOOP ou utilisez un autre type de LOOP pour 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;
Copy
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;
$$;
Copy

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') );
Copy
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') );
Copy

Meilleures pratiques

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') );
Copy
Résultat
URL                                                                                                   |
------------------------------------------------------------------------------------------------------+
https://thecompany.snowflakecomputing.com/api/files/CODETEST/PUBLIC/MY_STAGE/%2Fmydirectory%2Fmyfile.jpg|

Copy

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;
Copy
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;
$$;
Copy

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;
Copy
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;
$$;
Copy
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;
$$;
Copy

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;
Copy
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;
$$;
Copy

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;
Copy
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;
Copy

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);
Copy
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);
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
$$;
Copy

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

%FOUND

Peut être émulé

%NOTFOUND

Peut être émulé

%ISOPEN

Non pris en charge

Exemple de code

Code d’entrée :
 CREATE OR REPLACE PROCEDURE cursor_attributes_proc
IS
    is_open_attr BOOLEAN;
    found_attr BOOLEAN;
    my_record table1%ROWTYPE;
    CURSOR my_cursor IS SELECT * FROM table1;
BEGIN
    OPEN my_cursor;
    LOOP
        FETCH my_cursor INTO my_record;
        EXIT WHEN my_cursor%NOTFOUND;
        is_open_attr := my_cursor%ISOPEN;
        found_attr := my_cursor%FOUND;
    END LOOP;
    CLOSE my_cursor;
END;
Copy
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;
$$;
Copy

Meilleures pratiques

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;
Copy
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;
$$;
Copy

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;
Copy
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;
$$;
Copy

EWI apparenté

  1. 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';
Copy
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';
Copy

Meilleures pratiques

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;
Copy
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;
$$;
Copy

EWI apparenté

  1. 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.

  2. SSC-PRF-0004 : Cette instruction possède des utilisations de curseur For Loop.

  3. SSC-EWI-OR0110 : la clause For Update n’est pas prise en charge dans Snowflake.

Meilleures pratiques

  • Reformulez la requête en requête UPDATE ou DELETE normale, en spécifiant les colonnes dans la clause WHERE. 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;
Copy
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;
  $$;
Copy

Meilleures pratiques