SnowConvert AI - Différences fonctionnelles Oracle¶
SSC-FDM-OR0001¶
Note
Ce FDM a été ajouté pour une ancienne version de SnowConvert AI Oracle. Actuellement, il est obsolète.
Description¶
Cette erreur est liée au fichier de rapport Assessment. Elle apparaît lorsqu’une erreur se produit lors de l’écriture du fichier de rapport des détails de l’évaluation.
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0002¶
La valeur de début de la séquence dépasse la valeur maximale autorisée par Snowflake.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0068
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 à deux de 64 bits (de -2^63 à 2^63-1). Ainsi, selon ce qui a été mentionné précédemment, la valeur maximale autorisée est 9223372036854775807 pour les nombres positifs et 9223372036854775808 pour les nombres négatifs.
Exemple de code¶
Code d’entrée :¶
CREATE SEQUENCE SEQUENCE1
START WITH 9223372036854775808;
CREATE SEQUENCE SEQUENCE2
START WITH -9223372036854775809;
Code généré :¶
CREATE OR REPLACE SEQUENCE SEQUENCE1
--** SSC-FDM-OR0002 - SEQUENCE START VALUE EXCEEDS THE MAX VALUE ALLOWED BY SNOWFLAKE. **
START WITH 9223372036854775808
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}';
CREATE OR REPLACE SEQUENCE SEQUENCE2
--** SSC-FDM-OR0002 - SEQUENCE START VALUE EXCEEDS THE MAX VALUE ALLOWED BY SNOWFLAKE. **
START WITH -9223372036854775809
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}';
Meilleures pratiques¶
Il peut être recommandé de simplement réinitialiser la séquence et de modifier également son utilisation. NOTE : la colonne cible doit disposer d’un espace suffisant pour contenir cette valeur.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0003¶
Suppression de la clause de recherche de l’instruction with element.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0038
Description¶
La search_clause est utilisée pour définir l’ordre dans lequel les lignes sont traitées dans une instruction SELECT. Cette fonctionnalité permet un parcours personnalisé des données, garantissant que les résultats sont renvoyés dans une séquence spécifique en fonction des critères spécifiés. Cependant, il est important de noter que ce comportement, caractérisé par la search_clause, n’est pas pris en charge dans Snowflake.
Dans les bases de données telles que Oracle, la search_clause est couramment utilisée en conjonction avec des requêtes récursives ou des expressions de table communes (CTEs) pour influencer la séquence dans laquelle les données hiérarchiques sont explorées. En désignant une colonne ou un ensemble de colonnes spécifique dans la search_clause, vous pouvez contrôler le parcours en profondeur d’abord ou en largeur d’abord de la hiérarchie, ce qui a un impact sur l’ordre dans lequel les lignes sont traitées.
Dans Snowflake, un message search_clause sera généré, et la search_clause sera ensuite supprimée.
Exemple de code¶
Code d’entrée :¶
WITH dup_hiredate(eid, emp_last, mgr_id, reportLevel, hire_date, job_id) AS
(SELECT aValue from atable) SEARCH DEPTH FIRST BY hire_date SET order1 SELECT aValue from atable;
Code généré :¶
WITH dup_hiredate(eid, emp_last, mgr_id, reportLevel, hire_date, job_id) AS
(
SELECT aValue from
atable
) /*** SSC-FDM-OR0003 - SEARCH CLAUSE REMOVED FROM THE WITH ELEMENT STATEMENT ***/
SELECT aValue from
atable;
Recommandation¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0004¶
Mot clé siblings supprimé de la clause order by, car Snowflake ne le prend pas en charge.
Description¶
Dans Oracle, la clause ORDER BY SIBLINGS peut être utilisée dans les requêtes hiérarchiques pour préserver l’ordre des données fourni par la hiérarchie, tout en appliquant une réorganisation des valeurs qui sont des éléments de même niveau dans la même hiérarchie. Celle-ci n’est pas prise en charge dans Snowflake.
Exemple de code¶
Code d’entrée :¶
SELECT LEVEL,
LPAD(' ', 2 * (LEVEL - 1)) || NAME AS FORMATTED_NAME,
JOB_TITLE
FROM EMPLOYEES
START WITH MANAGER_ID IS NULL
CONNECT BY PRIOR EMPLOYEE_ID = MANAGER_ID
ORDER SIBLINGS BY NAME;
Code généré :¶
SELECT LEVEL,
NVL(
LPAD(' ', 2 * (
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '-' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!!LEVEL - 1)) :: STRING, '') || NVL(NAME :: STRING, '') AS FORMATTED_NAME,
JOB_TITLE
FROM
EMPLOYEES
START WITH MANAGER_ID IS NULL
CONNECT BY
PRIOR EMPLOYEE_ID = MANAGER_ID
ORDER BY
NAME /*** SSC-FDM-OR0004 - SIBLINGS KEYWORD REMOVED FROM ORDER BY CLAUSE BECAUSE SNOWFLAKE DOES NOT SUPPORT IT ***/;
Bien que vous ne puissiez pas obtenir exactement le même ordre qu’avec la clause SIBLINGS, il existe quelques alternatives pour obtenir un résultat similaire.
Intégrez la requête dans une requête externe qui applique le tri souhaité à l’aide d’
ORDER BY.Créez une CTE avec la requête hiérarchique à l’aide de
CONNECT BYet faites référence à la CTE dans une requête ultérieure pour appliquerORDER BYau tri entre éléments de même niveau (lignes au même niveau).
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0005¶
Les synonymes ne sont pas pris en charge dans Snowflake, mais les références à ce synonyme ont été modifiées par le nom d’objet d’origine.
Description¶
Les synonymes ne sont pas pris en charge dans Snowflake. Les synonymes sont remplacés par le nom d’origine.
Exemple de code¶
Code d’entrée :¶
CREATE TABLE TABLE1
(
COLUMN1 NUMBER
);
CREATE OR REPLACE SYNONYM B.TABLE1_SYNONYM FOR TABLE1;
SELECT * FROM B.TABLE1_SYNONYM WHERE B.TABLE1_SYNONYM.COLUMN1 = 20;
Code généré :¶
CREATE OR REPLACE TABLE TABLE1
(
COLUMN1 NUMBER(38, 18) /*** 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"}}'
;
-- --** SSC-FDM-OR0005 - SYNONYMS NOT SUPPORTED IN SNOWFLAKE BUT REFERENCES TO THIS SYNONYM WERE CHANGED BY THE ORIGINAL OBJECT NAME. **
-- CREATE OR REPLACE SYNONYM B.TABLE1_SYNONYM FOR TABLE1
;
SELECT * FROM
TABLE1
WHERE
TABLE1.COLUMN1 = 20;
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-FDM-OR0006¶
État de contrainte supprimé de la contrainte en ligne not null.
Description¶
Cet avertissement apparaît lorsque la contrainte de colonne not null contient l’un des états de contrainte Oracle suivants dans le cadre de la définition en ligne de la colonne:
[ RELY | NORELY | RELY DISABLE | RELY ENABLE | VALIDATE | NOVALIDATE ]
Snowflake ne prend pas en charge ces états. Par conséquent, ils seront supprimés de la contrainte en ligne NOT NULL.
Exemple de code ¶
Code d’entrée :¶
CREATE TABLE Table1(
col1 INT NOT NULL RELY
);
Code généré :¶
CREATE OR REPLACE TABLE Table1 (
col1 INT NOT NULL /*** SSC-FDM-OR0006 - CONSTRAINT STATE RELY REMOVED FROM NOT NULL INLINE CONSTRAINT ***/
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0007¶
Snowflake ne prend pas en charge la gestion des versions des objets. Les développeurs doivent envisager d’autres approches pour la gestion des versions du code.
Description¶
Snowflake ne prend pas en charge la gestion des versions des objets. Le modificateur EDITINONABLE ou NONEDITIONABLE est supprimé dans le code converti et un avertissement est ajouté.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE EDITIONABLE PROCEDURE FUN1 (n number)is
l_result number;
begin
DELETE FROM employees;
end;
Code généré :¶
--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE FUN1 (n NUMBER(38, 18))
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
l_result NUMBER(38, 18);
BEGIN
DELETE FROM
employees;
END;
$$;
Meilleures pratiques¶
L’utilisateur doit envisager d’autres approches pour la gestion des versions du code.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0008¶
Set Quantifier non pris en charge
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0071
Description¶
Le quantificateur « all » n’est pas pris en charge dans Snowflake. Le modificateur est supprimé du code source et un avertissement est ajouté. Le code résultant peut se comporter de manière inattendue.
Exemple de code¶
Code d’entrée :¶
SELECT location_id FROM locations
MINUS ALL
SELECT location_id FROM departments;
Code généré :¶
SELECT location_id FROM
locations
--** SSC-FDM-OR0008 - QUANTIFIER 'ALL' NOT SUPPORTED FOR THIS SET OPERATOR, RESULTS MAY DIFFER **
MINUS
SELECT location_id FROM
departments;
Dans Snowflake, les opérateurs INTERSECT et MINUS/EXCEPT supprimeront toujours les valeurs en double.
Meilleures pratiques¶
Vérifiez les alternatives dans Snowflake pour émuler la fonctionnalité du quantificateur « all ».
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0009¶
Les valeurs SQL implicites du curseur peuvent différer.
Description¶
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.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Cet EWI est affiché lorsque la valeur SQL implicite du curseur est utilisée. En effet, Oracle utilise des valeurs différentes selon le type de requête. Par exemple, pour SELECT, la valeur utilisée pour définir les valeurs SQL implicites du curseur sont le nombre de lignes retournées par la requête. Lorsque le type de requête est UPDATE/CREATE/DELETE/INSERT, la valeur utilisée est le nombre de lignes affectées. Il s’agit de la principale raison pour laquelle cet EWI s’affiche.
Exemple de code¶
Code d’entrée :¶
-- Additional Params: -t JavaScript
--Transformation for implicit cursor
CREATE OR REPLACE PROCEDURE SP_SAMPLE AUTHID DEFINER IS
stmt_no POSITIVE;
BEGIN
IF SQL%ROWCOUNT = 0 THEN
EXIT ;
END IF;
IF SQL%ISOPEN THEN
EXIT ;
END IF;
IF SQL%FOUND THEN
EXIT ;
END IF;
IF SQL%NOTFOUND THEN
EXIT ;
END IF;
END;
Code généré :¶
-- Additional Params: -t JavaScript
--Transformation for implicit cursor
CREATE OR REPLACE PROCEDURE SP_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.
let STMT_NO = new POSITIVE();
if (SQL.ROWCOUNT /*** SSC-FDM-OR0009 - SQL IMPLICIT CURSOR VALUES MAY DIFFER ***/ == 0) {
break;
}
if (SQL.ISOPEN) {
break;
}
if (SQL.FOUND) {
break;
}
if (SQL.NOTFOUND) {
break;
}
$$;
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-FDM-OR0010¶
La précision inférieure du type de données NUMBER a été augmentée pour correspondre à l’échelle.
Description¶
Le type de données NUMBER stocke les nombres fixes et à virgule flottante. Ces données sont portables entre les différents systèmes d’exploitation exécutant la base de données Oracle. Le type de données NUMBER est recommandé pour la plupart des cas dans lesquels vous devez stocker des données numériques. La syntaxe est NUMBER (X, Y), où X correspond à la précision et Y correspond à l’échelle.
Par exemple, NUMBER(5, 3) est un nombre qui possède 2 chiffres avant la décimale et 3 chiffres après la décimale, comme suit:
12.345
Autres considérations importantes :
L’échelle Y spécifie le nombre maximum de chiffres à droite de la virgule décimale.
La précision d’échelle YX spécifie le nombre minimum de zéros présents après le point décimal.
Ce message s’affiche lorsqu’un NUMBER possède une précision inférieure à son échelle. Snowflake ne prend pas en charge cette fonctionnalité, et ce message est utilisé pour indiquer que la valeur de la précision a été augmentée pour maintenir l’équivalence.
Remarque
Veuillez noter qu’il existe des cas où ce problème peut soit s’ajouter à d’autres transformations connues, soit ne pas se produire du tout. Par exemple, dans les cas où l’échelle est remplacée par neuf et où la précision antérieure est supérieure à neuf, ce message ne s’affichera NOT.
Exemple de code¶
Code d’entrée :¶
Requêtes¶
CREATE TABLE SampleNumberTable(Col1 NUMBER(4, 5));
INSERT INTO SampleNumberTable (Col1)
VALUES (0.00009);
INSERT INTO SampleNumberTable (Col1)
VALUES (0.000021);
INSERT INTO SampleNumberTable (Col1)
VALUES (0.012678912);
SELECT * FROM SampleNumberTable;
Résultat¶
Col1 |
-------+
0.00009|
0.00002|
0.01268|
Code généré :¶
Requêtes¶
CREATE OR REPLACE TABLE SampleNumberTable (Col1 NUMBER(5, 5) /*** SSC-FDM-OR0010 - NUMBER DATATYPE SMALLER PRECISION WAS INCREASED TO MATCH SCALE ***/ /*** 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 SampleNumberTable(Col1)
VALUES (0.00009);
INSERT INTO SampleNumberTable(Col1)
VALUES (0.000021);
INSERT INTO SampleNumberTable(Col1)
VALUES (0.012678912);
SELECT * FROM
SampleNumberTable;
Résultat¶
Col1 |
-------+
0.00009|
0.00002|
0.01268|
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0011¶
L’argument booléen a été supprimé, car l’option « add to stack » n’est pas prise en charge.
Description¶
Cet avertissement s’affiche lorsque le troisième argument facultatif de RAISE_APLICATION_ERROR a été supprimé pendant la migration. Cette fonctionnalité n’est pas prise en charge par Snowflake.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE FUNCTION TEST(SAMPLE_A IN NUMBER DEFAULT NULL,
SAMPLE_B IN NUMBER DEFAULT NULL)
RETURN NUMBER
AS
BEGIN
raise_application_error(-20001, 'First exception message', FALSE);
RETURN 1;
END TEST;
Code généré :¶
!!!RESOLVE EWI!!! /*** SSC-EWI-0068 - USER DEFINED FUNCTION WAS TRANSFORMED TO SNOWFLAKE PROCEDURE ***/!!!
CREATE OR REPLACE PROCEDURE TEST (SAMPLE_A NUMBER(38, 18) DEFAULT NULL,
SAMPLE_B NUMBER(38, 18) DEFAULT NULL)
RETURNS NUMBER(38, 18)
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/02/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
DECLARE
FIRST_EXCEPTION_MESSAGE_EXCEPTION_CODE_0 EXCEPTION (-20001, 'FIRST EXCEPTION MESSAGE');
BEGIN
--** SSC-FDM-OR0011 - ADD TO STACK OF ERRORS IS NOT SUPPORTED, BOOLEAN ARGUMENT FALSE WAS REMOVED. **
RAISE FIRST_EXCEPTION_MESSAGE_EXCEPTION_CODE_0;
RETURN 1;
END;
$$;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0012¶
Les instructions COMMIT et ROLLBACK nécessitent une configuration adéquate pour fonctionner comme prévu.
Description¶
Les instructions COMMIT et ROLLBACK nécessitent une configuration adéquate pour fonctionner comme prévu dans Snowflake. L’instruction suivante doit être exécutée dans Snowflake pour simuler la fonctionnalité correcte de ces instructions:
ALTER SESSION SET AUTOCOMMIT = false;
Exemple de code¶
Code d’entrée¶
COMMIT;
ROLLBACK;
Code généré¶
--** SSC-FDM-OR0012 - COMMIT REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
COMMIT;
--** SSC-FDM-OR0012 - ROLLBACK REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
ROLLBACK;
Meilleures pratiques¶
Exécutez la requête mentionnée dans la section de description avant de commencer à exécuter votre code.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0013¶
La clause Cycle n’est pas prise en charge dans Snowflake.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0039
Description¶
Ce message s’affiche lorsque SnowConvert AI trouve une requête avec une clause CYCLE. Celle-ci n’est pas prise en charge dans Snowflake et est donc commentée dans le code.
Cette clause indique lorsqu’il existe une récursivité.
Pour plus de détails, consultez la documentation sur la fonctionnalité de la clause.
Exemple de code¶
Connecter par¶
Code d’entrée :¶
CREATE OR REPLACE FORCE NONEDITIONABLE VIEW VIEW01 AS
SELECT
UNIQUE A.*
FROM
TABLITA A
WHERE
A.X = A.C CONNECT BY NOCYCLE A.C = 0 START WITH A.B = 1
HAVING
X = 1
GROUP BY
A.C;
Code généré :¶
CREATE OR REPLACE VIEW VIEW01
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
AS
SELECT DISTINCT
A.*
FROM
TABLITA A
WHERE
A.X = A.C
GROUP BY
A.C
HAVING
X = 1
--** SSC-FDM-OR0013 - CYCLE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE **
CONNECT BY
A.C = 0 START WITH A.B = 1;
Meilleures pratiques¶
S’il existe des cycles dans la hiérarchie des données, vous pouvez examiner cet article pour les gérer.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0014¶
Inadéquation du type de données de la clé étrangère.
Description¶
Cette erreur se produit lorsqu’il existe une inadéquation dans le type de données d’une clé étrangère.
Exemple de code¶
Code d’entrée :¶
CREATE TABLE "MyDb"."MyTable"
(
"COL1" NUMBER,
CONSTRAINT "PK" PRIMARY KEY ("COL1")
);
CREATE TABLE "MyDb"."MyTable1"
(
"COL1" NUMBER(*,0),
CONSTRAINT "FK1" FOREIGN KEY ("COL1") REFERENCES "MyDb"."MyTable" ("COL1")
);
Code généré :¶
CREATE OR REPLACE TABLE "MyDb"."MyTable"
(
"COL1" NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
CONSTRAINT "PK" PRIMARY KEY ("COL1")
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
CREATE OR REPLACE TABLE "MyDb"."MyTable1"
(
"COL1" NUMBER(38) /*** 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"}}'
;
ALTER TABLE "MyDb"."MyTable1"
ADD
--** SSC-FDM-OR0014 - FOREIGN KEY DATA TYPE MISMATCH **
CONSTRAINT "FK1" FOREIGN KEY ("COL1") REFERENCES "MyDb"."MyTable" ("COL1");
Note
Notez que « MyDb ». »MyTable1 ».COL1 et « MyDb ». »MyTable ».COL1 sont de types différents et que l’ERROR s’affiche.
Meilleures pratiques¶
S’il existe des cycles dans la hiérarchie des données, vous pouvez examiner cet article pour les gérer.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0015¶
Les résultats LENGTHB transformés en OCTET_LENGTH peuvent varier en raison de la gestion de la mémoire de DBMS.
Description¶
Ce problème se produit lorsqu’il existe un appel à la fonction LENGTHB qui retourne la taille d’une colonne ou d’un littéral en octets. Cette fonction est transformée en fonction OCTET_LENGTH de Snowflake.
Lorsque le paramètre de la fonction est une colonne, le résultat correspondra à la taille de la valeur que la colonne possède. Cette taille peut varier d’Oracle à Snowflake. Le type de la colonne joue un rôle important dans le résultat renvoyé par la fonction.
Exemple de code¶
Code d’entrée :¶
Requêtes¶
CREATE TABLE char_table
(
char_column1 CHAR(15)
);
INSERT INTO char_table VALUES ('Hello world');
SELECT char_column1, LENGTHB(char_column1), LENGTH('Hello world') FROM char_table;
Résultat¶
|CHAR_COLUMN1 |LENGTHB(CHAR_COLUMN1)|LENGTH('HELLOWORLD')|
|---------------|---------------------|--------------------|
|Hello world |15 |11 |
Code généré :¶
Requêtes¶
CREATE OR REPLACE TABLE char_table
(
char_column1 CHAR(15)
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
INSERT INTO char_table
VALUES ('Hello world');
SELECT char_column1,
OCTET_LENGTH(char_column1) /*** SSC-FDM-OR0015 - LENGTHB TRANSFORMED TO OCTET_LENGTH RESULTS MAY VARY DUE TO MEMORY MANAGEMENT OF DBMS ***/, LENGTH('Hello world') FROM
char_table;
Résultat¶
|CHAR_COLUMN1|OCTET_LENGTH(CHAR_COLUMN1)|LENGTH('HELLO WORLD')|
|------------|--------------------------|---------------------|
|Hello world |11 |11 |
Meilleures pratiques¶
Vérifiez manuellement les types de données utilisés.
Vérifiez l’encodage des colonnes utilisées, car OCTET_LENGTH peut renvoyer des tailles plus grandes lorsque la chaîne contient des points de code Unicode.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0016¶
Les options COMMIT et ROLLBACK ont été supprimées, car Snowflake n’en a pas besoin.
Description¶
Les options d’instruction COMMIT et ROLLBACK sont supprimées, car Snowflake n’en a pas besoin.
Exemple de code¶
Code d’entrée¶
COMMIT WORK FORCE '22.57.53';
ROLLBACK WORK FORCE '22.57.53';
Code généré¶
--** SSC-FDM-OR0016 - COMMIT OPTIONS REMOVED BECAUSE SNOWFLAKE DOES NOT REQUIRE THEM **
--** SSC-FDM-OR0012 - COMMIT REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
COMMIT WORK;
--** SSC-FDM-OR0016 - ROLLBACK OPTIONS REMOVED BECAUSE SNOWFLAKE DOES NOT REQUIRE THEM **
--** SSC-FDM-OR0012 - ROLLBACK REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
ROLLBACK WORK;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0017¶
DBTimezone a été supprimé pour utiliser la valeur par défaut de l’horodatage.
Description¶
Le mot-clé DBTIMEZONE a été supprimé de l’expression AT TIME ZONE.
Exemple de code¶
Code d’entrée :¶
SELECT TIMESTAMP '1998-12-25 09:26:50.12' AT TIME ZONE DBTIMEZONE FROM DUAL;
Code généré :¶
SELECT
--** SSC-FDM-OR0017 - DBTIMEZONE WAS REMOVED TO USE THE DEFAULT VALUE OF THE TIMESTAMP **
TO_TIMESTAMP_LTZ( TIMESTAMP '1998-12-25 09:26:50.12')
FROM DUAL;
Meilleures pratiques¶
Vous devrez peut-être définir le paramètre de session TIMEZONE afin d’obtenir des résultats équivalents.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0018¶
L’instruction Merge peut ne pas fonctionner comme prévu.
Description¶
Cet avertissement est utilisé pour indiquer que l’instruction Merge de Snowflake peut présenter certaines différences fonctionnelles par rapport à Oracle.
Exemple de code¶
Code d’entrée :¶
MERGE INTO people_target pt
USING people_source ps
ON (pt.person_id = ps.person_id)
WHEN MATCHED THEN UPDATE
SET pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title
DELETE where pt.title = 'Mrs.'
WHEN NOT MATCHED THEN INSERT
(pt.person_id, pt.first_name, pt.last_name, pt.title)
VALUES (ps.person_id, ps.first_name, ps.last_name, ps.title)
WHERE ps.title = 'Mr';
Code généré :¶
--** SSC-FDM-OR0018 - SNOWFLAKE MERGE STATEMENT MAY HAVE SOME FUNCTIONAL DIFFERENCES COMPARED TO ORACLE **
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECTS "people_target", "people_source" **
MERGE INTO people_target pt
USING people_source ps
ON (pt.person_id = ps.person_id)
WHEN MATCHED AND pt.title = 'Mrs.' THEN
DELETE
WHEN MATCHED THEN
UPDATE SET
pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title
WHEN NOT MATCHED AND ps.title = 'Mr' THEN
INSERT
(pt.person_id, pt.first_name, pt.last_name, pt.title)
VALUES (ps.person_id, ps.first_name, ps.last_name, ps.title);
Meilleures pratiques¶
Si vous obtenez des résultats différents de ceux d’Oracle, tenez compte des points suivants :
Pour la priorité des commandes d’exécution, accédez au [lien ] suivant(https://docs.snowflake.com/fr/sql-reference/sql/merge.html#usage-notes) pour obtenir plus d’informations.
Exécutez les instructions DML ignorées en dehors (avant ou après, selon le cas) de l’instruction Merge.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0019¶
La sortie du cadre de fenêtre peut ne pas être équivalente.
Description¶
Cet avertissement est ajouté lorsqu’une unité de cadre de fenêtre ROWS se trouve dans le code source.
ROWS fonctionne en utilisant des numéros de lignes physiques pour son calcul, qui peut différer une fois qu’il est migré vers la plateforme cible. Ajouter manuellement des clauses ORDER BY supplémentaires peut permettre d’atténuer ou d’éliminer ce problème.
Note
Notez que, comme l’indique la documentation Oracle,\ « La valeur renvoyée par une fonction analytique avec un décalage logique est toujours déterministe. Cependant, la valeur renvoyée par une fonction analytique avec un décalage physique peut produire des résultats non déterministes, à moins que l’expression d’ordre ne donne un ordre unique. Vous pouvez avoir à spécifier plusieurs colonnes dans la order_by_clause pour obtenir cet ordre unique. »
Ainsi, il est recommandé de vérifier au préalable si la fonction a renvoyé des résultats déterministes afin d’éviter tout problème.
Exemple de code ¶
Code d’entrée :¶
SELECT
SUM(C_BIRTH_DAY)
OVER (
ORDER BY C_BIRTH_COUNTRY
ROWS UNBOUNDED PRECEDING) AS MAX1
FROM WINDOW_TABLE;
Code généré :¶
SELECT
SUM(C_BIRTH_DAY)
OVER (
ORDER BY C_BIRTH_COUNTRY ROWS UNBOUNDED PRECEDING /*** SSC-FDM-OR0019 - WINDOW FRAME OUTPUT MAY NOT BE EQUIVALENT ***/) AS MAX1
FROM
WINDOW_TABLE;
Meilleures pratiques¶
Assurez un ordre déterministe pour les lignes afin de garantir des sorties déterministes lors de l’exécution dans Snowflake.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0020¶
PRAGMA EXCEPTION_INIT n’est pas pris en charge.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0051](../conversion-issues/oracleEWI.md#ssc-ewi-or0051)
Description¶
Cet avertissement est ajouté lorsque la fonction PRAGMA EXCEPTION_INIT est invoquée dans une procédure. Le nom des exceptions et le code SQL des exceptions est défini dans la fonction RAISE. Lorsqu’il est converti dans l’Exécution de scripts Snowflake, le code SQL est ajouté à la déclaration des exceptions. Cependant, certaines valeurs de code peuvent être non valides dans l’Exécution de scripts Snowflake.
Exemple de code ¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_SAMPLE AUTHID DEFINER IS
NEW_EXCEPTION EXCEPTION;
PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
NEW_EXCEPTION2 EXCEPTION;
PRAGMA EXCEPTION_INIT ( NEW_EXCEPTION2, -20100 );
BEGIN
IF true THEN
RAISE NEW_EXCEPTION;
END IF;
EXCEPTION
WHEN NEW_EXCEPTION THEN
--Handle Exceptions
NULL;
END;
/
Code généré :¶
Snowflake Scripting¶
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
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0097 - PROCEDURE PROPERTIES ARE NOT SUPPORTED IN SNOWFLAKE PROCEDURES ***/!!!
AS
$$
DECLARE
--** SSC-FDM-OR0023 - EXCEPTION CODE NUMBER EXCEEDS SNOWFLAKE SCRIPTING LIMITS **
NEW_EXCEPTION EXCEPTION;
--** SSC-FDM-OR0020 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED **
PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
NEW_EXCEPTION2 EXCEPTION (-20100, '');
--** SSC-FDM-OR0020 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED **
PRAGMA EXCEPTION_INIT ( NEW_EXCEPTION2, -20100 );
BEGIN
IF (true) THEN
RAISE NEW_EXCEPTION;
END IF;
EXCEPTION
WHEN NEW_EXCEPTION THEN
--Handle Exceptions
NULL;
END;
$$;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0021¶
La clause For Loop avec un nombre flottant en tant que limite peut ne pas se comporter correctement dans l’Exécution de scripts Snowflake.
Description¶
L’Exécution de scripts Snowflake autorise uniquement un INTEGER ou une expression qui correspond à un INTEGER en tant que limite pour la condition FOR LOOP. Les nombres flottants seront arrondis à la valeur supérieure ou inférieure et modifieront la limite d’origine.
La limite inférieure sera arrondie à l’entier le plus proche. Par exemple :
3.1 -> 3, 6.7 -> 7, 4.5 -> 5
Cependant, la limite supérieure sera tronquée à l’entier inférieur le plus proche. Par exemple :
3.1 -> 3, 6.7 -> 6, 4.5 -> 4
Exécution de scripts Snowflake¶
CREATE OR REPLACE PROCEDURE p1()
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
DECLARE
var1 VARCHAR DEFAULT '';
var2 VARCHAR DEFAULT '';
var3 VARCHAR DEFAULT '';
BEGIN
--Loop 1
FOR i IN 1.2 TO 5.2 DO
var1 := var1 || ' ' || i::VARCHAR;
END FOR;
--Loop 2
FOR i IN 1.7 TO 5.5 DO
var2 := var2 || ' ' || i::VARCHAR;
END FOR;
--Loop 3
FOR i IN 1.5 TO 5.8 DO
var3 := var3 || ' ' || i::VARCHAR;
END FOR;
RETURN ' Loop1: ' || var1 ||
' Loop2: ' || var2 ||
' Loop3: ' || var3;
END;
$$;
CALL p1();
Résultat¶
P1 |
--------------------------------------------------+
Loop1: 1 2 3 4 5 |
Loop2: 2 3 4 5 |
Loop3: 2 3 4 5 |
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE p1
AS
BEGIN
FOR i NUMBER(5,1) IN 1.2 .. 5.7 LOOP
NULL;
END LOOP;
END;
Code généré :¶
CREATE OR REPLACE PROCEDURE p1 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "07/02/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
BEGIN
--** SSC-FDM-OR0021 - FOR LOOP WITH FLOAT NUMBER AS LOWER OR UPPER BOUND MAY NOT BEHAVE CORRECTLY IN SNOWFLAKE SCRIPTING **
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
FOR i IN 1.2 TO 5.7
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
LOOP
NULL;
END LOOP;
END;
$$;
Meilleures pratiques¶
Réécrivez la condition FOR LOOP afin qu’elle utilise des entiers.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0022¶
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.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0100
Description¶
Oracle autorise plusieurs conditions dans une seule FOR LOOP. Cependant, l’Exécution de scripts Snowflake n’autorise qu’une seule condition par FOR LOOP. Seule la première condition est migrée, et les autres sont ignorées lors de la transformation.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE P3
AS
BEGIN
FOR i IN REVERSE 1..3,
REVERSE i+5..i+7
LOOP
NULL;
END LOOP;
END;
Code généré :¶
CREATE OR REPLACE PROCEDURE P3 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
BEGIN
--** SSC-FDM-OR0022 - FOR LOOP WITH MULTIPLE CONDITIONS IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING **
FOR i IN REVERSE 1 TO 3 LOOP
NULL;
END LOOP;
END;
$$;
Meilleures pratiques¶
Séparez les
FOR LOOPen différentes boucles ou réécrivez la condition.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0023¶
Le code d’exception dépasse la limite de l’Exécution de scripts Snowflake.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0099
Description¶
Cet avertissement apparaît lorsqu’un code d’erreur de déclaration d’exception dépasse les limites du nombre d’exceptions de l’Exécution de scripts Snowflake. Le nombre doit être un entier compris entre -20000 et -20999.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE procedure_exception
IS
my_exception EXCEPTION;
PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
BEGIN
NULL;
END;
Code généré :¶
CREATE OR REPLACE PROCEDURE procedure_exception ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
--** SSC-FDM-OR0023 - EXCEPTION CODE NUMBER EXCEEDS SNOWFLAKE SCRIPTING LIMITS **
my_exception EXCEPTION;
--** SSC-FDM-OR0020 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED **
PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
BEGIN
NULL;
END;
$$;
Meilleures pratiques¶
Vérifiez si le code d’exception se situe entre les limites autorisées par l’Exécution de scripts Snowflake. Si non, remplacez-le par un autre numéro d’exception disponible.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0024¶
Colonnes de l’expression introuvables
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0002
Description¶
Cette erreur se produit lorsque les colonnes d’une expression Select n’ont pas pu être résolues, généralement lorsqu’elle fait référence à un accès de type dont la référence n’a pas été résolue ou à une colonne avec un type défini par l’utilisateur dont les colonnes n’ont pas été définies, comme un type sans corps ou un type d’objet sans colonnes.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE record_unknown_table_proc
AS
unknownTable_variable_rowtype unknownTable%ROWTYPE;
BEGIN
INSERT INTO MyTable values unknownTable_variable_rowtype;
END;
Code généré :¶
CREATE OR REPLACE PROCEDURE record_unknown_table_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
unknownTable_variable_rowtype OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
BEGIN
INSERT INTO MyTable
SELECT
null /*** SSC-FDM-OR0024 - COLUMNS FROM EXPRESSION unknownTable%ROWTYPE NOT FOUND ***/;
END;
$$;
Meilleures pratiques¶
Vérifiez que la définition de type référencée comporte bien des colonnes.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0025¶
La contrainte Not Null n’est pas prise en charge dans les procédures Snowflake.
Description¶
La contrainte NOT NULL des déclarations de variables Oracle n’est pas prise en charge dans les déclarations de variables à l’intérieur des procédures dans Snowflake.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE PROC04
IS
var3 FLOAT NOT NULL := 100;
BEGIN
NULL;
END;
Code généré :¶
CREATE OR REPLACE PROCEDURE PROC04 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
var3 FLOAT := 100 /*** SSC-FDM-OR0025 - NOT NULL CONSTRAINT IS NOT SUPPORTED BY SNOWFLAKE ***/;
BEGIN
NULL;
END;
$$;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0026¶
Type non pris en charge dans l’opération de conversion.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0045
Description¶
Cette erreur se produit lorsqu’un type n’est pas pris en charge dans une opération de conversion.
Exemple¶
Code d’entrée :¶
select cast(' $123.45' as number, 'L999.99') from dual;
Code généré :¶
select
--** SSC-FDM-OR0026 - CAST TYPE NOT SUPPORTED **
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0011 - THE FORMAT PARAMETER ' $123.45' IS NOT SUPPORTED ***/!!!
cast(' $123.45' as NUMBER(38, 18) , 'L999.99') from dual;
EWIs connexes¶
SSC-EWI-OR0011 : le paramètre de format n’est pas pris en charge.
Meilleures pratiques¶
La conversion est convertie en fonction définie par l’utilisateur (UDF/Stub). Vous pouvez donc la modifier pour émuler le comportement de la fonction de conversion.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0027¶
DEFAULT ON CONVERSION ERROR n’est pas pris en charge.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0029
Description¶
L’erreur de conversion par défaut n’est pas prise en charge dans Snowflake.
Exemple de code¶
Code d’entrée :¶
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
Code généré :¶
SELECT
--** SSC-FDM-OR0027 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE IN SNOWFLAKE **
TO_NUMBER('2,00') "Value" FROM DUAL;
Meilleures pratiques¶
Vous pouvez créer une UDF pour émuler le comportement de la valeur
DEFAULTON CONVERSION ERROR.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0028¶
Le paramètre SYS_CONTEXT n’est pas pris en charge.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0031.
Description¶
Cette erreur se produit lorsqu’un paramètre de fonction SYS_CONTEXT n’est pas pris en charge.
Exemple de code¶
Code d’entrée :¶
SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Code généré :¶
SELECT
--** SSC-FDM-OR0028 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE **
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Meilleures pratiques¶
La fonction est convertie en fonction définie par l’utilisateur(stub). Vous pouvez donc la modifier pour émuler le comportement du paramètre SYS_CONTEXT.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0029¶
Cette configuration ALTER SESSION n’est pas prise en charge dans Snowflake.
Description¶
Une clause ou une configuration de l’instruction ALTER SESSION n’est pas prise en charge actuellement.
Exemple de code¶
Code d’entrée :¶
ALTER SESSION SET SQL_TRACE TRUE;
Code généré :¶
----** SSC-FDM-OR0029 - THIS ALTER SESSION CONFIGURATION IS NOT SUPPORTED IN SNOWFLAKE **
--ALTER SESSION SET SQL_TRACE TRUE
;
Meilleures pratiques¶
Pour les variables de session, vous pouvez consulter la [documentation ] Snowflake (https://docs.snowflake.com/fr/sql-reference/parameters.html) pour trouver un équivalent.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0030¶
La pseudo-colonne ROWID n’est pas prise en charge dans Snowflake.
Description¶
Lorsque ROWID est utilisée comme pseudo-colonne dans une requête, elle est transformée en null afin d’éviter les erreurs d’exécution, et l’EWI est ajouté. Il n’existe encore aucune transformation pour émuler la fonctionnalité.
Exemple de code¶
Code d’entrée Oracle :¶
SELECT ROWID FROM T1;
Code généré :¶
SELECT
--** SSC-FDM-OR0030 - ROWID PSEUDOCOLUMN IS NOT SUPPORTED IN SNOWFLAKE, IT WAS CONVERTED TO NULL TO AVOID RUNTIME ERRORS **
'' AS ROWID
FROM
T1;
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-FDM-OR0031¶
La clause de journalisation des erreurs dans les instructions DML n’est pas prise en charge par Snowflake.
Description¶
Cette erreur est utilisée pour indiquer que la clause error_logging dans les instructions DML d’Oracle n’est pas prise en charge par les instructions DML de Snowflake.
Exemple de code¶
Code d’entrée :¶
MERGE INTO people_target pt
USING people_source ps ON (pt.person_id = ps.person_id)
WHEN MATCHED THEN UPDATE
SET pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title
LOG ERRORS;
Code généré :¶
MERGE INTO people_target pt
USING people_source ps ON (pt.person_id = ps.person_id)
WHEN MATCHED THEN
UPDATE
SET pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title
-- --** SSC-FDM-OR0031 - THE ERROR LOGGING CLAUSE IN DML STATEMENTS IS NOT SUPPORTED BY SNOWFLAKE **
--LOG ERRORS
;
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-FDM-OR0032¶
La fonction StandardHash avec un paramètre d’entrée sans chaîne génère un résultat différent dans Snowflake.
Description¶
Cet avertissement est utilisé lorsque la fonction STANDARD_HASH dans Oracle avec un paramètre d’entrée sans chaîne génère un résultat différent dans Snowflake.
Exemple de code¶
Code d’entrée :¶
Requête¶
SELECT STANDARD_HASH(1+1) FROM DUAL;
Résultat¶
STANDARD_HASH(1+1) |
--------------------------------------------------+
E39323970701D93598FC1D357F4BF04578CE3242 |
Code généré :¶
Requête¶
SELECT
--** SSC-FDM-OR0032 - STANDARD HASH FUNCTION WITH INPUT NON-STRING PARAMETER GENERATES A DIFFERENT RESULT IN SNOWFLAKE **
SHA1(1+1)
FROM DUAL;
Résultat¶
SHA1(1+1) |
--------------------------------------------------+
da4b9237bacccdf19c0760cab7aec4a8359010b0 |
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-FDM-OR0033¶
DBMS_RANDOM.VALUE La précision du paquet intégré est inférieure dans Snowflake.
Description
Ce message s’affiche lorsque SnowConvert AI migre une DBMS_RANDOM.VALUE. Fonction de paquet intégré d’Oraclen. Cet avertissement indique que l’UDF ajoutée pour émuler la fonctionnalité a une précision inférieure à la fonction d’originen.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE built_in_package_proc
IS
var1 NUMBER;
BEGIN
SELECT DBMS_RANDOM.VALUE() INTO var1 FROM DUAL;
SELECT DBMS_RANDOM.VALUE(2,10) INTO var1 FROM DUAL;
END;
Code généré :¶
CREATE OR REPLACE PROCEDURE built_in_package_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
var1 NUMBER(38, 18);
BEGIN
SELECT
--** SSC-FDM-OR0033 - DBMS_RANDOM.VALUE DIGITS OF PRECISION ARE LOWER IN SNOWFLAKE **
DBMS_RANDOM.VALUE_UDF() INTO
:var1
FROM DUAL;
SELECT
--** SSC-FDM-OR0033 - DBMS_RANDOM.VALUE DIGITS OF PRECISION ARE LOWER IN SNOWFLAKE **
DBMS_RANDOM.VALUE_UDF(2,10) INTO
:var1
FROM DUAL;
END;
$$;
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-FDM-OR0034¶
La valeur de début de séquence avec “LIMIT VALUE” n’est pas prise en charge par Snowflake.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0001
Description¶
Cette erreur apparaît lorsque la valeur de l’instruction START WITH est LIMIT VALUE.
Dans Oracle, cette clause n’est utilisée que dans ALTER TABLE.
STARTWITHLIMIT VALUE, qui est spécifique auxidentity_options, ne peut être utilisée qu’avecALTERTABLEMODIFY. Si vous spécifiezSTARTWITHLIMIT VALUE, la base de données Oracle verrouille la table et trouve la valeur maximale de la colonne d’identité dans la table (pour les séquences croissances) ou la valeur minimale de la colonne d’identité (pour les séquences décroissantes) et attribue la valeur comme point culminant du générateur de séquences. La valeur suivante renvoyée par le générateur de séquences sera le point culminant +INCREMENTBYintegerpour les séquences croissances, ou le point culminant -INCREMENTBYintegerpour les séquences décroissantes.
ALTER TABLE ORACLE¶
Exemple de code¶
Code d’entrée :¶
CREATE SEQUENCE SEQUENCE1
START WITH LIMIT VALUE;
Code généré :¶
CREATE OR REPLACE SEQUENCE SEQUENCE1
--** SSC-FDM-OR0034 - SEQUENCE START VALUE WITH 'LIMIT VALUE' IS NOT SUPPORTED BY SNOWFLAKE. **
START WITH LIMIT VALUE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}';
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0035¶
Mise en œuvre de l’UDF de vérification DBMS_OUTPUT.PUTLINE
Description¶
Ce message s’affiche lorsque SnowConvert AI migre une DBMS_OUTPUT.PUT_LINE Fonction de paquet intégré d’Oraclen. Cet avertissement vous indique de vérifier l’UD ajoutéeF.
Cet EWI existe pour indiquer à l’utilisateur d’examiner la mise en œuvre de DBMS_OUTPUT.PUT_LINE_UDF, où les informations suivantes se trouvent :
Avertissement
Les performances peuvent être affectées par l’utilisation de cette UDF. Si vous voulez commencer à journaliser des informations, supprimez le commentaire de la mise en œuvre. Notez que cette opération utilise une table temporaire. Si vous voulez que les données persistent après la fin d’une session, veuillez supprimer TEMPORARY de CREATE TABLE.
Une fois les appels à DBMS_OUTPUT.PUT_LINE_UDF effectués, veuillez utiliser la requête suivante pour lire tous les journaux : SELECT * FROM DBMS_OUTPUT.DBMS_OUTPUT_LOG.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE builtin_package_call
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(1);
DBMS_OUTPUT.PUT_LINE("Test");
END;
Code généré :¶
CREATE OR REPLACE PROCEDURE builtin_package_call ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
BEGIN
--** SSC-FDM-OR0035 - CHECK UDF IMPLEMENTATION FOR DBMS_OUTPUT.PUT_LINE_UDF. **
CALL DBMS_OUTPUT.PUT_LINE_UDF(1);
--** SSC-FDM-OR0035 - CHECK UDF IMPLEMENTATION FOR DBMS_OUTPUT.PUT_LINE_UDF. **
CALL DBMS_OUTPUT.PUT_LINE_UDF("Test");
END;
$$;
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-FDM-OR0036¶
Paramètres de paquets intégrés inutiles
Description¶
Ce message s’affiche lorsque SnowConvert AI migre une procédure ou une fonction de paquet intégrée d’Oracle, et certains des arguments sont supprimés de l’appel.
Certains des paramètres d’origine peuvent ne pas avoir d’équivalent dans Snowflake ou peuvent ne pas être nécessaires dans la version transformée. Ces paramètres sont supprimés du code produit, mais ils sont préservés dans le message EWI pour que l’utilisateur puisse toujours les suivre.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE built_in_package_proc
IS
w_file UTL_FILE.FILE_TYPE;
BEGIN
w_file:= UTL_FILE.FOPEN('MY_DIR','test.txt','W',32760);
UTL_FILE.PUT_LINE(w_file,'New line');
END;
Code généré :¶
CREATE OR REPLACE PROCEDURE built_in_package_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
w_file OBJECT /*** SSC-FDM-0015 - REFERENCED CUSTOM TYPE 'UTL_FILE.FILE_TYPE' IN QUERY NOT FOUND, USAGES MAY BE AFFECTED ***/ := OBJECT_CONSTRUCT();
BEGIN
--** SSC-FDM-OR0036 - PARAMETERS: 'LOCATION, MAX_LINESIZE_UDF' UNNECESSARY IN THE IMPLEMENTATION. **
CALL UTL_FILE.FOPEN_UDF('test.txt', 'W');
SELECT
*
INTO
w_file
FROM
TABLE(RESULT_SCAN(LAST_QUERY_ID()));
--** SSC-FDM-OR0036 - PARAMETERS: 'AUTOFLUSH_UDF' UNNECESSARY IN THE IMPLEMENTATION. **
CALL UTL_FILE.PUT_LINE_UDF(:w_file, 'New line');
END;
$$;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0037¶
La syntaxe utilisée dans Select n’est pas prise en charge dans Snowflake.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0004
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
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
SUBQUERY RESTRICTION
HIERARCHIES
EXTERNAL MODIFY
DBLINK
SHARDS
PARTITION
SUBPARTITION
HIERARCHICAL
Exemple de code¶
Code d’entrée :¶
SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
Code généré :¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "TABLE1" **
SELECT * FROM
TABLE1
-- --** SSC-FDM-OR0037 - THE 'OPTIONAL MODIFIED EXTERNAL' SYNTAX IN SELECT IS NOT SUPPORTED IN SNOWFLAKE **
-- EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED)
;
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0038¶
L’attribut booléen du curseur n’est pas pris en charge.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0128
Description¶
Ce message est utilisé pour indiquer qu’un attribut booléen du curseur n’est pas pris en charge dans SnowScript ou qu’il n’existe pas de transformation qui émule sa fonctionnalité dans SnowScript. Le tableau suivant indique les attributs booléens du curseur qui peuvent être émulés:
Attribut booléen du curseur |
Statut |
|---|---|
|
Peut être émulé |
|
Peut être émulé |
|
Non pris en charge |
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE cursor_attributes_proc
IS
is_open_attr BOOLEAN;
found_attr BOOLEAN;
my_record table1%ROWTYPE;
CURSOR my_cursor IS SELECT * FROM table1;
BEGIN
OPEN my_cursor;
LOOP
FETCH my_cursor INTO my_record;
EXIT WHEN my_cursor%NOTFOUND;
is_open_attr := my_cursor%ISOPEN;
found_attr := my_cursor%FOUND;
END LOOP;
CLOSE my_cursor;
END;
Code généré :¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "table1" **
CREATE OR REPLACE PROCEDURE cursor_attributes_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
is_open_attr BOOLEAN;
found_attr BOOLEAN;
my_record OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
my_cursor CURSOR
FOR
SELECT
OBJECT_CONSTRUCT( *) sc_cursor_record FROM
table1;
BEGIN
OPEN my_cursor;
LOOP
--** SSC-PRF-0003 - FETCH INSIDE A LOOP IS CONSIDERED A COMPLEX PATTERN, THIS COULD DEGRADE SNOWFLAKE PERFORMANCE. **
FETCH my_cursor INTO
:my_record;
IF (my_record IS NULL) THEN
EXIT;
END IF;
is_open_attr := null /*my_cursor%ISOPEN*/ /*** SSC-FDM-OR0038 - BOOLEAN CURSOR ATTRIBUTE %ISOPEN IS NOT SUPPORTED IN SNOWFLAKE ***/;
found_attr := my_record IS NOT NULL;
END LOOP;
CLOSE my_cursor;
END;
$$;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0039¶
Create Type non pris en charge dans Snowflake
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0007
Description¶
Ce message est ajouté lorsqu’une instruction Create Type non prise en charge par Snowflake est utilisée.
Exemple de code¶
Code d’entrée (Oracle) :¶
CREATE TYPE type6 UNDER type5(COL1 INTEGER);
Code généré :¶
----** SSC-FDM-OR0039 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE **
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0040¶
Les caractères numériques ne peuvent pas être modifiés dans Snowflake. Le séparateur décimal dans Snowflake est le caractère point.
Description¶
Les caractères numériques ne peuvent pas être modifiés dans Snowflake. Le séparateur décimal dans Snowflake est le caractère point. L’instruction de session ALTER est commentée et un avertissement est ajouté.
Exemple de code¶
Oracle :¶
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.';
Snowflake Scripting :¶
----** SSC-FDM-OR0040 - NUMERIC CHARACTERS CANNOT BE ALTERED IN SNOWFLAKE. THE DECIMAL SEPARATOR IN SNOWFLAKE IS THE DOT CHARACTER. **
--ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.'
;
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-FDM-OR0041¶
Paquet intégré non pris en charge.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0076
Description¶
La traduction pour les paquets intégrés n’est pas prise en charge actuellement.
Exemple de code¶
Code d’entrée (Oracle) :¶
SELECT
UTL_RAW.CAST_TO_RAW('some magic here'),
DBMS_UTILITY.GET_TIME
FROM DUAL;
Code généré :¶
SELECT
--** SSC-FDM-OR0041 - TRANSLATION FOR BUILT-IN PACKAGE 'UTL_RAW.CAST_TO_RAW' IS NOT CURRENTLY SUPPORTED. **
'' AS CAST_TO_RAW,
--** SSC-FDM-OR0041 - TRANSLATION FOR BUILT-IN PACKAGE 'DBMS_UTILITY.GET_TIME' IS NOT CURRENTLY SUPPORTED. **
'' AS GET_TIME
FROM DUAL;
Meilleures pratiques¶
Aucune action de la part de l’utilisateur final n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0042¶
Le type Date transformé en Timestamp a un comportement différent.
Description¶
Le type Date est transformé en type Date ou Timestamp en fonction de l’indicateur –disableDateAsTimestamp, car le type Date dans Snowflake a un comportement différent de celui dans Oracle.
Différences clés¶
DATE Oracle |
Snowflake DATE |
|
|---|---|---|
Fonctionnalité |
Enregistre les informations relatives à la date et à l’heure |
Ne stocke que les informations relatives à la date (année, mois, jour) |
Stockage interne |
Nombre binaire représentant les secondes écoulées depuis l’époque |
Format compact optimisé pour les dates |
Cas d’utilisation |
Stockage polyvalent de la date et de l’heure |
Scénarios dans lesquels seules des informations sur la date sont nécessaires |
Avantages |
Prise en charge de la date et de l’heure |
Stockage plus efficace des dates |
Limitations |
Il n’est pas possible d’enregistrer séparément la date et l’heure. |
Ne stocke pas d’informations sur l’heure |
Exemple de code¶
Code d’entrée (Oracle) :¶
CREATE TABLE "PUBLIC"."TABLE1"
(
"CREATED_DATE" DATE,
"UPDATED_DATE" DATE
);
Code généré :¶
CREATE OR REPLACE TABLE "PUBLIC"."TABLE1"
(
"CREATED_DATE" TIMESTAMP /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/,
"UPDATED_DATE" TIMESTAMP /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
-- Additional Params: --disableDateAsTimestamp
CREATE OR REPLACE TABLE "PUBLIC"."TABLE1"
(
"CREATED_DATE" DATE /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/,
"UPDATED_DATE" DATE /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
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-FDM-OR0043¶
Les paramètres BFILE/BLOB sont considérés comme binaires. Un format peut être nécessaire.
Description¶
Cette erreur se produit lorsque TO_CLOB est converti en fonction TO_VARCHAR. Un format peut être nécessaire pour les paramètres BFILE/BLOB.
Exemple de code¶
Code d’entrée: ¶
SELECT TO_CLOB('Lorem ipsum dolor sit amet') FROM DUAL;
Code généré :¶
SELECT
--** SSC-FDM-OR0043 - BFILE/BLOB PARAMETERS ARE CONSIDERED BINARY, FORMAT MAY BE NEEDED. **
TO_VARCHAR('Lorem ipsum dolor sit amet')
FROM DUAL;
Meilleures pratiques¶
Vérifiez si les sorties dans le code d’entrée et le code converti sont équivalentes et ajoutez un paramètre de format si nécessaire.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0044¶
Le paramètre de correspondance REGEXP_LIKE_UDF peut ne pas se comporter correctement.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cet avertissement apparaît lorsque la condition REGEXP_LIKE d’Oracle vient avec le troisième paramètre (paramètre de correspondance). Cet avertissement est ajouté car l’REGEXP_LIKE_UDF utilisée pour remplacer la condition REGEXP_LIKE ne reconnaît pas tous les caractères utilisés par le paramètre de correspondance, de sorte que le résultat de la requête dans Snowflake peut ne pas être équivalent à Oracle.
Exemple de code¶
Code d’entrée Oracle :¶
SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i')
ORDER BY last_name;
Code généré :¶
SELECT last_name
FROM
hr.employees
WHERE
--** SSC-FDM-OR0044 - REGEXP_LIKE_UDF MATCH PARAMETER MAY HAVE SOME FUNCTIONAL DIFFERENCES COMPARED TO ORACLE **
PUBLIC.REGEXP_LIKE_UDF(last_name, '([aeiou])\\1', 'i')
ORDER BY last_name;
Lorsque la condition
REGEXP_LIKEvient avec l’un des caractères non pris en charge par la fonction définie par l’utilisateur, une solution possible peut consister à modifier l’expression régulière afin de simuler le comportement du caractère manquant dans le paramètre de correspondance. Pour en savoir plus sur les caractères non pris en charge, consultez la documentation REGEXP_LIKE_UDF.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0045¶
Les clauses de partitions sont gérées par Snowflake.
Note
Ce FDM est obsolète. Veuillez vous référer à la documentation SSC-EWI-OR0010
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 TABLITA PARTITION(col1);
Code généré :¶
SELECT * FROM
TABLITA
-- --** SSC-FDM-OR0045 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE **
-- PARTITION(col1)
;
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-FDM-OR0046¶
La restriction de sous-requête n’est pas possible dans Snowflake.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cet avertissement se produit lorsqu’une restriction de sous-requête apparaît dans une instruction SELECT.
Exemple de code¶
Code d’entrée :¶
SELECT * FROM LATERAL(SELECT * FROM TABLITA WITH READ ONLY CONSTRAINT T);
Code généré :¶
SELECT * FROM LATERAL(SELECT * FROM
TABLITA
-- --** SSC-FDM-OR0046 - THE SUBQUERY RESTRICTION IS NOT POSSIBLE IN SNOWFLAKE **
-- WITH READ ONLY CONSTRAINT T
);
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-FDM-OR0047¶
Il peut être nécessaire de définir un format TimeStampOutput.
Description¶
Le paramètre de session TIMESTAMP_OUTPUT_FORMAT doit peut-être être défini sur “DD-MON-YY HH24.MI.SS.FF AM TZH:TZM” pour l’équivalence de sortie de l’horodatage.
Exemple de code¶
Code d’entrée: ¶
SELECT SYSTIMESTAMP FROM DUAL;
Exemple de sortie TIMESTAMP par défaut dans Oracle¶
Sortie
13-JAN-21 04.18.37.288656 PM +00:00
Code généré :¶
SELECT
CURRENT_TIMESTAMP() /*** SSC-FDM-OR0047 - YOU MAY NEED TO SET TIMESTAMP OUTPUT FORMAT ('DD-MON-YY HH24.MI.SS.FF AM TZH:TZM') ***/
FROM DUAL;
Exemple de sortie TIMESTAMP par défaut 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-FDM-OR0049¶
La fonction LAG peut échouer si le type de valeur par défaut diffère du type d’expression.
Description¶
Dans Oracle, la fonction LAG convertit automatiquement le type de données de la valeur par défaut pour correspondre au type de l’expression. Cependant, Snowflake n’effectue pas cette conversion implicite. Par conséquent, un avertissement est émis pour indiquer que la fonction LAG peut échouer si les types de données sont incompatibles.
Exemple de code¶
Code d’entrée :¶
SELECT
LAG(salary, 2, '0') OVER (ORDER BY salary) AS salary_two_steps_back
FROM
employees;
Code généré :¶
SELECT
--** SSC-FDM-OR0049 - LAG FUNCTION MIGHT FAIL IF DEFAULT VALUE TYPE DIFFERS FROM THE EXPRESSION TYPE. **
LAG(salary, 2, '0')
OVER (ORDER BY salary) AS salary_two_steps_back
FROM
employees;
Meilleures pratiques¶
Vérifiez que le type de données de la valeur par défaut correspond au type de données de l’expression dans la fonction
LAG. S’ils diffèrent, convertissez explicitement la valeur par défaut en type de données de l’expression.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-OR0050¶
Les exceptions avec les paramètres NOCOPY peuvent entraîner une incohérence des données.
Description¶
Dans PL/SQL d’Oracle, le mot-clé NOCOPY est un indice d’optimisation pour les paramètres de procédure OUT et INOUT. Par défaut, Oracle transmet ces paramètres par valeur, créant ainsi une copie coûteuse des données pendant l’appel et la recopiant à la fin. Cela peut entraîner une surcharge importante des performances pour les grandes structures de données.
NOCOPY demande à Oracle de transmettre les paramètres par référence, ce qui permet à la procédure de modifier directement les données d’origine. Cela élimine la surcharge liée à la copie et améliore les performances. Cependant, les modifications sont immédiates et ne sont pas implicitement annulées si une exception non gérée se produit dans la procédure.
Par conséquent, nous supprimerons l’option des paramètres NOCOPY et ajouterons ce FDM. En effet, l’exécution de la procédure s’arrête lorsqu’une exception survient, ce qui empêche l’instruction RETURN d’être atteinte. En conséquence, la variable du bloc de déclaration de l’appelant conserve ses valeurs initiales, car la procédure ne parvient pas à renvoyer correctement une nouvelle valeur pour l’attribution.
Exemple de code¶
Code d’entrée :¶
CREATE OR REPLACE PROCEDURE calculate_division_with_nocopy (
p_numerator IN NUMBER,
p_denominator IN NUMBER,
p_result OUT NOCOPY NUMBER
)
IS
PROCEDURE calculate_division(result OUT NOCOPY NUMBER)
AS
BEGIN
result := 20;
result := p_numerator / p_denominator;
END calculate_division;
BEGIN
calculate_division(p_result);
EXCEPTION
WHEN OTHERS THEN
p_result := p_result;
END calculate_division_with_nocopy;
Code généré :¶
CREATE OR REPLACE PROCEDURE calculate_division_with_nocopy (p_numerator NUMBER(38, 18), p_denominator NUMBER(38, 18), p_result 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/23/2025", "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
DECLARE
calculate_division PROCEDURE(result
--** SSC-FDM-OR0050 - EXCEPTIONS WITH NOCOPY PARAMETERS MAY LEAD TO DATA INCONSISTENCY. **
NUMBER(38, 18))
RETURNS NUMBER
AS
BEGIN
result := 20;
result := :p_numerator / :p_denominator;
RETURN result;
END;
call_results NUMBER;
BEGIN
call_results := (
CALL
calculate_division(:p_result)
);
p_result := :call_results;
EXCEPTION
WHEN OTHER THEN
p_result := :p_result;
END;
$$;
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.