SnowConvert AI – Funktionale Unterschiede bei Oracle¶
SSC-FDM-OR0001¶
Bemerkung
Diese FDM wurde für eine alte Version von Oracle SnowConvert AI hinzugefügt. Derzeit ist sie veraltet.
Beschreibung¶
Dieser Fehler hängt mit der Berichtsdatei Assessment zusammen. Sie erscheint, wenn ein Fehler beim Schreiben der Berichtsdatei mit den Bewertungsdetails auftritt.
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0002¶
Der Wert für den Start der Sequenz überschreitet den von Snowflake zulässigen Maximalwert.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0068.
Beschreibung¶
Dieser Fehler tritt auf, wenn der START WITH-Anweisungswert den von Snowflake zulässigen Höchstwert überschreitet. Snowflake hat Folgendes zum Startwert angegeben: Gibt den ersten Wert an, der von der Sequenz zurückgegeben wird. Unterstützte Werte sind alle Werte, die durch die Komplementärganzzahl eines 64-Bit-Zweiers dargestellt werden können (von -2^63 to 2^63-1). Gemäß dem zuvor erwähnten ist der zulässige Höchstwert also 9223372036854775807 für positive Zahlen und 9223372036854775808 für negative Zahlen.
Beispielcode¶
Eingabecode:¶
CREATE SEQUENCE SEQUENCE1
START WITH 9223372036854775808;
CREATE SEQUENCE SEQUENCE2
START WITH -9223372036854775809;
Generierter Code:¶
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"}}';
Best Practices¶
Es kann empfohlen werden, einfach die Sequenz zurückzusetzen und auch die Verwendung zu ändern. NOTE: Die Zielspalte muss genügend Platz haben, um diesen Wert aufzunehmen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0003¶
Suchklausel wurde aus der With-Element-Anweisung entfernt.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0038.
Beschreibung¶
Die search_clause wird verwendet, um die Reihenfolge festzulegen, in der Zeilen in einer SELECT-Anweisung verarbeitet werden. Diese Funktion ermöglicht ein individuelles Durchlaufen der Daten und stellt sicher, dass die Ergebnisse in einer bestimmten Sequenz auf der Grundlage der angegebenen Kriterien zurückgegeben werden. Es ist jedoch wichtig zu beachten, dass dieses Verhalten, das durch die search_clause gekennzeichnet ist, in Snowflake nicht unterstützt wird.
In Datenbanken wie Oracle wird die search_clause häufig in Verbindung mit rekursiven Abfragen oder Common Table Expressions (CTEs) verwendet, um die Reihenfolge zu beeinflussen, in der hierarchische Daten durchsucht werden. Durch die Angabe einer bestimmten Spalte oder einer Gruppe von Spalten in der search_clause können Sie die Tiefensuche- oder Breitensuche-Traversal der Hierarchie steuern und damit die Reihenfolge beeinflussen, in der die Zeilen verarbeitet werden.
In Snowflake wird eine search_clause-Meldung generiert und die search_clause anschließend entfernt.
Beispielcode¶
Eingabecode:¶
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;
Generierter Code:¶
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;
Empfehlung¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0004¶
Das Schlüsselwort für Elemente wurde aus der Klausel „order by“ entfernt, da Snowflake es nicht unterstützt.
Beschreibung¶
In Oracle kann die ORDER BY SIBLINGS-Klausel in hierarchischen Abfragen verwendet werden, um die durch die Hierarchie vorgegebene Reihenfolge der Daten beizubehalten, während gleichzeitig eine Neuordnung der Werte vorgenommen wird, die Geschwister in derselben Hierarchie sind. Dies wird von Snowflake nicht unterstützt.
Beispielcode¶
Eingabecode:¶
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;
Generierter Code:¶
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 ***/;
Während die genau gleiche Reihenfolge, die mit der SIBLINGS-Klausel erreicht wurde, möglicherweise nicht zugänglich ist, gibt es einige Alternativen, um ein ähnliches Ergebnis zu erzielen.
Betten Sie die Abfrage in eine äußere Abfrage ein, die die gewünschte Sortierung mit
ORDER BYanwendet.Erstellen Sie eine CTE mit der hierarchischen Abfrage unter Verwendung von
CONNECT BYund verweisen Sie in einer nachfolgenden Abfrage auf die CTE, umORDER BYfür die Sortierung von Geschwisterzeilen (Zeilen auf derselben Ebene) anzuwenden.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0005¶
Synonyme werden in Snowflake nicht unterstützt, aber Verweise auf dieses Synonym wurden durch den ursprünglichen Objektnamen geändert.
Beschreibung¶
Synonyme werden in Snowflake nicht unterstützt. Die Synonyme werden durch den ursprünglichen Namen ersetzt.
Beispielcode¶
Eingabecode:¶
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;
Generierter Code:¶
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;
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0006¶
Einschränkungsstatus aus Nicht-Null-Inline-Einschränkung entfernt.
Beschreibung¶
Diese Warnung tritt auf, wenn die Nicht-Null-Spalteneinschränkung einen der folgenden Oracle-Einschränkungsstatus als Teil der Inline-Definition der Spalte enthält:
[ RELY | NORELY | RELY DISABLE | RELY ENABLE | VALIDATE | NOVALIDATE ]
Snowflake unterstützt diese Status nicht. Daher werden sie aus der NOT NULL-Inline-Einschränkung entfernt.
Beispielcode ¶
Eingabecode:¶
CREATE TABLE Table1(
col1 INT NOT NULL RELY
);
Generierter Code:¶
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"}}'
;
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0007¶
Snowflake unterstützt nicht die Versionierung von Objekten. Entwickler sollten alternative Ansätze für die Code-Versionierung in Betracht ziehen.
Beschreibung¶
Snowflake unterstützt die Versionierung von Objekten nicht. Der Modifikator EDITINONABLE oder NONEDITIONABLE wird im konvertierten Code entfernt und eine Warnung wird hinzugefügt.
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE EDITIONABLE PROCEDURE FUN1 (n number)is
l_result number;
begin
DELETE FROM employees;
end;
Generierter Code:¶
--** 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;
$$;
Best Practices¶
Der Benutzer sollte alternative Ansätze für die Code-Versionierung in Betracht ziehen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0008¶
Festlegen des Quantifizierers wird nicht unterstützt
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0071.
Beschreibung¶
Der Quantifizierer „all“ wird in Snowflake nicht unterstützt. Der Modifikator wird aus dem Quellcode entfernt und eine Warnung wird hinzugefügt. Der resultierende Code kann sich unerwartet verhalten.
Beispielcode¶
Eingabecode:¶
SELECT location_id FROM locations
MINUS ALL
SELECT location_id FROM departments;
Generierter Code:¶
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;
In Snowflake entfernen die Vorgänge INTERSECT und MINUS/EXCEPT Duplikate immer.
Best Practices¶
Prüfen Sie Alternativen in Snowflake, um die Funktionalität des „All“-Quantifizierers zu emulieren.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0009¶
Implizite SQL-Cursorwerte können sich unterscheiden.
Beschreibung¶
Bemerkung
Generieren Sie Prozeduren und Makros mit JavasScript als Zielsprache, indem Sie die folgende Option hinzufügen: -t JavaScript oder --PLTargetLanguage JavaScript
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Diese EWI wird angezeigt, wenn ein impliziter SQL-Cursorwert verwendet wird. Dies liegt daran, dass Oracle je nach Typ der Abfrage unterschiedliche Werte verwendet. Beispiel: für SELECT der Wert, der zum Einstellen von verwendet wird SQL implizite Cursorwerte sind die Anzahl der von der Abfrage zurückgegebenen Zeilen. Wenn der Abfragetyp UPDATE/CREATE/DELETE/INSERT ist, wird die Anzahl der betroffenen Zeilen als Wert verwendet; dies ist der Hauptgrund, warum diese EWI angezeigt wird.
Beispielcode¶
Eingabecode:¶
-- 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;
Generierter Code:¶
-- 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;
}
$$;
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0010¶
NUMBER-Datentyp mit geringerer Genauigkeit wurde erhöht, um an die Skalierung anzupassen.
Beschreibung¶
Der NUMBER-Datentyp speichert Fest- und Gleitkommazahlen. Diese Daten sind zwischen verschiedenen Betriebssystemen portierbar, auf denen die Oracle-Datenbank ausgeführt wird. Der NUMBER-Datentyp wird für die meisten Fälle empfohlen, in denen Sie numerische Daten speichern müssen. Die -Syntax lautet wie folgt: NUMBER (X, Y) wobei X die Genauigkeit und Y die Skalierung ist.
Beispiel: NUMBER(5, 3) ist eine Zahl mit 2 Ziffern vor der Dezimalzahl und 3 Ziffern nach der Dezimalzahl, genau wie die folgende:
12.345
Weitere wichtige Hinweise:
Scale Y gibt die maximale Anzahl von Stellen rechts vom Dezimalpunkt an.
Scale-Precision YX gibt die Mindestanzahl der Nullen an, die nach dem Dezimalpunkt vorhanden sind.
Diese Meldung wird angezeigt, wenn ein NUMBER-Datentyp hat eine geringere Genauigkeit als seine Skalierung hat. Snowflake unterstützt dieses Feature nicht und diese Meldung wird verwendet, um anzuzeigen, dass der Wert der Genauigkeit erhöht wurde, um die Äquivalenz zu erhalten.
Hinweis
Bitte bedenken Sie, dass es Fälle gibt, in denen dieses Problem entweder zusammen mit anderen bekannten Transformationen auftreten kann oder gar nicht auftritt. Zum Beispiel: In Fällen, in denen die Skalierung durch neunzehn ersetzt wird und die frühere Präzision größer als neunzehn ist, wird diese Meldung NOT angezeigt.
Beispielcode¶
Eingabecode:¶
Abfragen¶
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;
Ergebnis¶
Col1 |
-------+
0.00009|
0.00002|
0.01268|
Generierter Code:¶
Abfragen¶
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;
Ergebnis¶
Col1 |
-------+
0.00009|
0.00002|
0.01268|
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0011¶
Das boolesche Argument wurde entfernt, da die Option „zum Stapel hinzufügen“ nicht unterstützt wird.
Beschreibung¶
Diese Warnung wird angezeigt, wenn das dritte optionale Argument von RAISE_APLICATION_ERROR während der Migration entfernt wurde. Diese Funktion wird von Snowflake nicht unterstützt.
Beispielcode¶
Eingabecode:¶
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;
Generierter Code:¶
!!!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;
$$;
Best Practices¶
Es sind keine Aktionen des Endbenutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0012¶
COMMIT- und ROLLBACK-Anweisungen erfordern ein entsprechendes Setup, um wie vorgesehen ausgeführt zu werden.
Beschreibung¶
COMMIT- und ROLLBACK-Anweisungen erfordern ein entsprechendes Setup, um in Snowflake wie vorgesehen ausgeführt zu werden. Die folgende Anweisung muss in Snowflake ausgeführt werden, um die korrekte Funktionalität dieser Anweisungen zu simulieren:
ALTER SESSION SET AUTOCOMMIT = false;
Beispielcode¶
Eingabecode¶
COMMIT;
ROLLBACK;
Generierter Code¶
--** 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;
Best Practices¶
Führen Sie die im Abschnitt „Beschreibung“ angegebene Abfrage aus, bevor Sie mit der Ausführung Ihres Codes beginnen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0013¶
Die Zyklusklausel wird in Snowflake nicht unterstützt.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0039.
Beschreibung¶
Diese Nachricht wird angezeigt, wenn SnowConvert AI eine Abfrage mit einer CYCLE-Klausel findet. Diese wird in Snowflake nicht unterstützt, daher wird sie aus dem Code auskommentiert.
Diese Klausel markiert, wenn es eine Rekursion gibt.
Weitere Informationen zur Klausel-Funktion finden Sie unter documentation.
Beispielcode¶
CONNECT BY¶
Eingabecode:¶
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;
Generierter Code:¶
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;
Best Practices¶
Wenn in der Datenhierarchie Zyklen vorhanden sind, können Sie diesen [Artikel] (https://docs.snowflake.com/en/user-guide/queries-cte#cause-1-cyclic-data-hierarchy) lesen, um damit umzugehen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0014¶
Datentypen des Fremdschlüssels stimmen nicht überein.
Beschreibung¶
Dieser Fehler tritt auf, wenn ein Fremdschlüssel-Datentyp nicht übereinstimmt.
Beispielcode¶
Eingabecode:¶
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")
);
Generierter Code:¶
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");
Bemerkung
Beachten Sie Folgendes: „MyDb“.“MyTable1“.COL1 und „MyDb“.“MyTable“.COL1 sind von unterschiedlichem Typ und es wird ERROR angezeigt.
Best Practices¶
Wenn in der Datenhierarchie Zyklen vorhanden sind, können Sie diesen [Artikel] (https://docs.snowflake.com/en/user-guide/queries-cte#cause-1-cyclic-data-hierarchy) lesen, um damit umzugehen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0015¶
Die von LENGTHB nach OCTET_LENGTH transformierten Ergebnisse können aufgrund des Speichermanagements von DBMS variieren.
Beschreibung¶
Dieses Problem tritt auf, wenn ein Aufruf der Funktion [LENGTHB] (https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/LENGTH.html#GUID-8F97F652-5AE8-4457-AFD7-7A6F25551E0C) erfolgt, die die Größe einer Spalte oder eines Literals in Bytes zurückgibt. Diese Funktion wird in die Snowflake-Funktion OCTET_LENGTH umgewandelt.
Wenn der Parameter der Funktion eine Spalte ist, ist das Ergebnis die Größe des Spaltenwertes. Diese Größe kann von Oracle zu Snowflake variieren. Der Typ der Spalte spielt eine wichtige Rolle bei dem von der Funktion zurückgegebenen Ergebnis.
Beispielcode¶
Eingabecode:¶
Abfragen¶
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;
Ergebnis¶
|CHAR_COLUMN1 |LENGTHB(CHAR_COLUMN1)|LENGTH('HELLOWORLD')|
|---------------|---------------------|--------------------|
|Hello world |15 |11 |
Generierter Code:¶
Abfragen¶
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;
Ergebnis¶
|CHAR_COLUMN1|OCTET_LENGTH(CHAR_COLUMN1)|LENGTH('HELLO WORLD')|
|------------|--------------------------|---------------------|
|Hello world |11 |11 |
Best Practices¶
Überprüfen Sie manuell die verwendeten Datentypen.
Überprüfen Sie die Codierung der verwendeten Spalten, da OCTET_LENGTH größere Größen zurückgeben kann, wenn die Zeichenfolge Unicode-Codepunkte enthält.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0016¶
COMMIT- und ROLLBACK -Optionen wurden entfernt, da Snowflake sie nicht benötigt
Beschreibung¶
COMMIT- und ROLLBACK-Anweisungsoptionen werden entfernt, da Snowflake sie nicht mehr benötigt.
Beispielcode¶
Eingabecode¶
COMMIT WORK FORCE '22.57.53';
ROLLBACK WORK FORCE '22.57.53';
Generierter Code¶
--** 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;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0017¶
DBTimezone wurde entfernt, um den Standardwert des Zeitstempels zu verwenden.
Beschreibung¶
DBTIMEZONE-Schlüsselwort wurde aus dem Ausdruck AT TIME ZONE entfernt.
Beispielcode¶
Eingabecode:¶
SELECT TIMESTAMP '1998-12-25 09:26:50.12' AT TIME ZONE DBTIMEZONE FROM DUAL;
Generierter Code:¶
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;
Best Practices¶
Möglicherweise müssen Sie den Sitzungsparameter TIMEZONE setzen, um gleiche Ergebnisse zu erhalten.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0018¶
Die Merge-Anweisung funktioniert möglicherweise nicht wie erwartet
Beschreibung¶
Diese Warnung wird verwendet, um darauf hinzuweisen, dass die Snowflake-Merge-Anweisung möglicherweise einige Funktionsunterschiede im Vergleich zu Oracle aufweist.
Beispielcode¶
Eingabecode:¶
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';
Generierter Code:¶
--** 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);
Best Practices¶
Wenn Sie andere Ergebnisse erhalten als Oracle, müssen Sie Folgendes beachten:
Weitere Informationen zur Priorisierung der Ausführungsreihenfolge finden Sie unter Link.
Führen Sie die ausgelassenen DML-Anweisungen außerhalb der Merge-Anweisung aus (vorher oder nachher, je nach Bedarf).
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0019¶
Die Ausgabe des Fensterrahmens ist möglicherweise nicht gleichwertig
Beschreibung¶
Diese Warnung wird hinzugefügt, wenn sich eine ROWS-Fensterrahmeneinheit im Quellcode befindet.
ROWS verwendet physische Zeilennummern für seine Berechnungen, die sich nach der Migration auf die Zielplattform unterscheiden können. Manuelles Hinzufügen von zusätzlichen ORDER BY-Klauseln können helfen, dieses Problem zu mindern oder zu entfernen.
Bemerkung
Beachten Sie, wie in der [Oracle-Dokumentation] (https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/Analytic-Functions.html) angegeben:\ „Der von einer analytischen Funktion mit einem logischen Offset zurückgegebene Wert ist immer deterministisch.“ Der von einer Analysefunktion mit einem physischen Offset zurückgegebene Wert kann jedoch nicht deterministische Ergebnisse liefern, es sei denn, der Sortierungsausdruck führt zu einer eindeutigen Sortierung. Möglicherweise müssen Sie mehrere Spalten in order_by_clause angeben, um diese eindeutige Reihenfolge zu erreichen.
Es wird daher empfohlen, vorab zu prüfen, ob die Funktion deterministische Ergebnisse liefert, um Probleme zu vermeiden.
Beispielcode ¶
Eingabecode:¶
SELECT
SUM(C_BIRTH_DAY)
OVER (
ORDER BY C_BIRTH_COUNTRY
ROWS UNBOUNDED PRECEDING) AS MAX1
FROM WINDOW_TABLE;
Generierter Code:¶
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;
Best Practices¶
Stellen Sie eine deterministische Reihenfolge für Zeilen sicher, um deterministische Ausgaben bei der Ausführung in Snowflake zu gewährleisten.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0020¶
PRAGMA EXCEPTION_INIT wird nicht unterstützt.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0051.
Beschreibung¶
Diese Warnung wird hinzugefügt, wenn die PRAGMA EXCEPTION_INIT-Funktion innerhalb einer Prozedur aufgerufen wird. Name der Exception und SQL-Code der Exceptions werden in der RAISE-Funktion festgelegt. Bei der Konvertierung in Snowflake Scripting wird der SQL-Code wird der Ausnahmedeklaration hinzugefügt, jedoch können einige Codewerte in Snowflake Scripting ungültig sein.
Beispielcode ¶
Eingabecode:¶
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;
/
Generierter Code:¶
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;
$$;
Best Practices¶
Es ist keine Aktion des Endbenutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0021¶
„For Loop With Float Number As Bound“ funktioniert möglicherweise nicht korrekt im Snowflake Scripting.
Beschreibung¶
Snowflake Scripting erlaubt nur einen INTEGER oder einen Ausdruck, der zu einem INTEGER ausgewertet wird, als Grenze für die FOR LOOP Bedingung. Gleitende Zahlen werden auf- oder abgerundet und verändern die ursprüngliche Begrenzung.
Die untere Grenze wird auf die nächste ganze Zahl gerundet. Beispiel:
3.1 -> 3, 6.7 -> 7, 4.5 -> 5
Die obere Grenze wird jedoch auf die nächste untere Ganzzahl gekürzt. Beispiel:
3.1 -> 3, 6.7 -> 6, 4.5 -> 4
Snowflake Scripting¶
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();
Ergebnis¶
P1 |
--------------------------------------------------+
Loop1: 1 2 3 4 5 |
Loop2: 2 3 4 5 |
Loop3: 2 3 4 5 |
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE PROCEDURE p1
AS
BEGIN
FOR i NUMBER(5,1) IN 1.2 .. 5.7 LOOP
NULL;
END LOOP;
END;
Generierter Code:¶
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;
$$;
Best Practices¶
Schreiben Sie die FOR LOOP-Bedingung neu, sodass Ganzzahlen verwendet werden.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0022¶
„For Look With Multiple Conditions“ wird derzeit von Snowflake Scripting nicht unterstützt. Es wird nur die erste Bedingung verwendet
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0100.
Beschreibung¶
Oracle erlaubt mehrere Bedingungen in einem einzigen FOR LOOP. Snowflake Scripting erlaubt jedoch nur eine Bedingung pro FOR LOOP. Nur die erste Bedingung wird migriert und die anderen werden bei der Transformation ignoriert.
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE PROCEDURE P3
AS
BEGIN
FOR i IN REVERSE 1..3,
REVERSE i+5..i+7
LOOP
NULL;
END LOOP;
END;
Generierter Code:¶
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;
$$;
Best Practices¶
Trennen Sie
FOR LOOPin verschiedene Schleifen oder schreiben Sie die Bedingung neu.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0023¶
Der Ausnahmecode überschreitet die Snowflake Scripting-Beschränkung
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0099.
Beschreibung¶
Diese Warnung wird angezeigt, wenn ein Fehlercode bei der Deklaration einer Ausnahme die Anzahl der Snowflake Scripting-Ausnahmen überschreitet. Die Zahl muss eine ganze Zahl (Integer) zwischen -20.000 und -20.999 sein.
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE PROCEDURE procedure_exception
IS
my_exception EXCEPTION;
PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
BEGIN
NULL;
END;
Generierter Code:¶
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;
$$;
Best Practices¶
Prüfen Sie, ob der Ausnahmecode zwischen den von Snowflake Scripting zulässigen Limits liegt, falls Sie ihn nicht durch eine andere verfügbare Ausnahmenummer ändern.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0024¶
Spalten aus Ausdruck nicht gefunden
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0002.
Beschreibung¶
Dieser Fehler tritt auf, wenn die Spalten eines Auswahlausdrucks nicht aufgelöst werden konnten, normalerweise, wenn er sich entweder auf einen Typzugriff bezieht, dessen Referenz nicht aufgelöst wurde, oder auf eine Spalte mit einem benutzerdefinierten Typ, dessen Spalten nicht definiert wurden. wie z. B. ein Typ ohne Text oder ein Objekttyp ohne Spalten.
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE PROCEDURE record_unknown_table_proc
AS
unknownTable_variable_rowtype unknownTable%ROWTYPE;
BEGIN
INSERT INTO MyTable values unknownTable_variable_rowtype;
END;
Generierter Code:¶
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;
$$;
Best Practices¶
Überprüfen Sie, ob die Typdefinition, auf die verwiesen wurde, Spalten enthält.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0025¶
„Not Null“-Einschränkung wird in Snowflake-Prozeduren nicht unterstützt
Beschreibung¶
Die Oracle-Variablendeklaration mit der Einschränkung NOT NULL wird in Variablendeklarationen innerhalb von Prozeduren in Snowflake nicht unterstützt.
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE PROCEDURE PROC04
IS
var3 FLOAT NOT NULL := 100;
BEGIN
NULL;
END;
Generierter Code:¶
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;
$$;
Best Practices¶
Es ist keine Aktion des Endbenutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0026¶
Typ wird bei Umwandlungsoperationen nicht unterstützt.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0045.
Beschreibung¶
Dieser Fehler tritt auf, wenn ein Typ in einer Umwandlungsoperation nicht unterstützt wird.
Beispiel¶
Eingabecode:¶
select cast(' $123.45' as number, 'L999.99') from dual;
Generierter Code:¶
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;
Zugehörige EWIs¶
SSC-EWI-OR0011: Der Formatparameter wird nicht unterstützt.
Best Practices¶
Die Umwandlung wird in eine benutzerdefinierte Funktion konvertiert (UDF/Stub), sodass Sie es ändern können, um das Verhalten der Umwandlungsfunktion zu emulieren.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0027¶
DEFAULT ON CONVERSION ERROR wird nicht unterstützt.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0029.
Beschreibung¶
Standard bei Konvertierungsfehlern, die in Snowflake nicht unterstützt werden
Beispielcode¶
Eingabecode:¶
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
Generierter Code:¶
SELECT
--** SSC-FDM-OR0027 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE IN SNOWFLAKE **
TO_NUMBER('2,00') "Value" FROM DUAL;
Best Practices¶
Sie können UDF erstellen, um das Verhalten des
DEFAULT-WertsON CONVERSION ERRORzu emulieren.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0028¶
SYS_CONTEXT-Parameter wird nicht unterstützt.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0031.
Beschreibung¶
Dieser Fehler tritt auf, wenn ein SYS_CONTEXT-Funktionsparameter nicht unterstützt wird.
Beispielcode¶
Eingabecode:¶
SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Generierter Code:¶
SELECT
--** SSC-FDM-OR0028 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE **
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Best Practices¶
Die Funktion wird in eine benutzerdefinierte Funktion(Stub) umgewandelt, sodass Sie sie anpassen können, um das Verhalten des SYS_-Parameters zu emulieren.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0029¶
Diese ALTER SESSION-Konfiguration wird in Snowflake nicht unterstützt.
Beschreibung¶
Eine Klausel oder Konfiguration der ALTER SESSION-Anweisung wird derzeit nicht unterstützt.
Beispielcode¶
Eingabecode:¶
ALTER SESSION SET SQL_TRACE TRUE;
Generierter Code:¶
----** SSC-FDM-OR0029 - THIS ALTER SESSION CONFIGURATION IS NOT SUPPORTED IN SNOWFLAKE **
--ALTER SESSION SET SQL_TRACE TRUE
;
Best Practices¶
Für Sitzungsvariablen können Sie die Snowflake-Dokumentation überprüfen, um eine Entsprechung zu finden.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0030¶
ROWID-Pseudospalte wird in Snowflake nicht unterstützt
Beschreibung¶
Wenn ROWID als Pseudospalte in einer Abfrage verwendet wird, wird sie zu null transformiert, um Laufzeitfehler zu vermeiden, und die EWI wird hinzugefügt. Es gibt immer noch keine Transformation, um die Funktionalität zu emulieren.
Beispielcode¶
Oracle-Eingabecode:¶
SELECT ROWID FROM T1;
Generierter Code:¶
SELECT
--** SSC-FDM-OR0030 - ROWID PSEUDOCOLUMN IS NOT SUPPORTED IN SNOWFLAKE, IT WAS CONVERTED TO NULL TO AVOID RUNTIME ERRORS **
'' AS ROWID
FROM
T1;
Best Practices¶
Es ist keine Aktion des Endbenutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0031¶
Die Fehlerprotokollierungsklausel in DML-Anweisungen wird von Snowflake nicht unterstützt
Beschreibung¶
Dieser Fehler weist darauf hin, dass die error_logging-Klausel in Oracles DML-Anweisungen von Snowflakes DML-Anweisungen nicht unterstützt wird.
Beispielcode¶
Eingabecode:¶
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;
Generierter Code:¶
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
;
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0032¶
StandardHash-Funktion mit einem Nicht-String-Eingabeparameter erzeugt in Snowflake ein anderes Ergebnis.
Beschreibung¶
Diese Warnung wird verwendet, wenn die STANDARD_HASH-Funktion in Oracle mit einem Nicht-String-Eingabeparameter in Snowflake ein anderes Ergebnis erzeugt.
Beispielcode¶
Eingabecode:¶
Abfrage¶
SELECT STANDARD_HASH(1+1) FROM DUAL;
Ergebnis¶
STANDARD_HASH(1+1) |
--------------------------------------------------+
E39323970701D93598FC1D357F4BF04578CE3242 |
Generierter Code:¶
Abfrage¶
SELECT
--** SSC-FDM-OR0032 - STANDARD HASH FUNCTION WITH INPUT NON-STRING PARAMETER GENERATES A DIFFERENT RESULT IN SNOWFLAKE **
SHA1(1+1)
FROM DUAL;
Ergebnis¶
SHA1(1+1) |
--------------------------------------------------+
da4b9237bacccdf19c0760cab7aec4a8359010b0 |
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0033¶
DBMS_RANDOM.VALUE Die Genauigkeit des integrierten Pakets ist in Snowflake geringer
Beschreibung
Diese Meldung wird angezeigt, wenn SnowConvert AI einen DBMS_RANDOM.VALUE migriert. Oracle-Builtin-Paketfunktionn. Diese Warnung weist darauf hin, dass die UDF zur Emulation der Funktionalität hinzugefügt wurde und eine geringere Präzision besitzt als die ursprüngliche Funktion.
Beispielcode¶
Eingabecode:¶
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;
Generierter Code:¶
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;
$$;
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0034¶
Sequenzstartwert mit ‚LIMIT VALUE‘ wird von Snowflake nicht unterstützt.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0001.
Beschreibung¶
Dieser Fehler tritt auf, wenn die START WITH-Anweisung LIMIT VALUE ist.
In Oracle wird diese Klausel nur in ALTER TABLE verwendet.
STARTWITHLIMIT VALUEist spezifisch füridentity_optionsund kann nur mitALTERTABLEMODIFYverwendet werden. Wenn SieSTARTWITHLIMIT VALUEangeben, sperrt die Oracle Datenbank die Tabelle und findet den maximalen Wert der Identitätsspalte in der Tabelle (für zunehmende Sequenzen) oder den minimalen Wert der Identitätsspalte (für abnehmende Sequenzen) und weist den Wert als Höchstwert des Sequenzgenerators zu. Der nächste vom Sequenzgenerator zurückgegebene Wert entspricht dem High-Water-Mark +INCREMENTBYIntegerbei aufsteigenden Sequenzen bzw. dem High-Water-Mark -INCREMENTBYIntegerbei absteigenden Sequenzen.
ALTER TABLE ORACLE¶
Beispielcode¶
Eingabecode:¶
CREATE SEQUENCE SEQUENCE1
START WITH LIMIT VALUE;
Generierter Code:¶
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"}}';
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0035¶
DBMS_OUTPUT.PUTLINE UDF-Implementierung überprüfen
Beschreibung¶
Diese Meldung wird angezeigt, wenn SnowConvert AI eine DBMS_OUTPUT.PUT_LINE migriert. In Oracle integrierte Paketfunktion#x6E;. Diese Warnung weist Sie darauf hin, dass Sie die hinzugefügte UD überprüfen sollten.F.
Diese EWI weist den Benutzer darauf hin, die DBMS_OUTPUT.PUT_LINE_UDF-Implementierung zu überprüfen, in der die folgenden Informationen zu finden sind:
Warnung
Die Leistung kann durch Verwendung dieser UDF beeinträchtigt werden. Wenn Sie mit der Protokollierung von Informationen beginnen möchten, sollten Sie die Implementierung auskommentieren. Beachten Sie, dass hierbei eine temporäre Tabelle verwendet wird. Wenn Sie möchten, dass die Daten nach dem Ende einer Sitzung erhalten bleiben, entfernen Sie bitte TEMPORARY aus der CREATE TABLE.
Sobald die Aufrufe von DBMS_OUTPUT.PUT_LINE_UDF erfolgt sind, verwenden Sie bitte die folgende Abfrage, um alle Logs auszulesen: SELECT * FROM DBMS_OUTPUT.DBMS_OUTPUT_LOG.
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE PROCEDURE builtin_package_call
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(1);
DBMS_OUTPUT.PUT_LINE("Test");
END;
Generierter Code:¶
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;
$$;
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0036¶
Unnötige integrierte Paketparameter
Beschreibung¶
Diese Meldung wird angezeigt, wenn SnowConvert AI eine Oracle-Builtin-Paketprozedur oder -funktion migriert und dabei einige der Argumente aus dem Aufruf entfernt werden.
Einige der ursprünglichen Parameter haben möglicherweise keine Entsprechung in Snowflake oder werden in der transformierten Version nicht benötigt. Diese Parameter werden aus dem erzeugten Code entfernt, jedoch in der EWI-Nachricht beibehalten, sodass der Benutzer sie weiterhin nachverfolgen kann.
Beispielcode¶
Eingabecode:¶
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;
Generierter Code:¶
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;
$$;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0037¶
Die verwendete Syntax in der „Select“-Anweisung wird in Snowflake nicht unterstützt.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0004.
Bemerkung
Einige Teile des Ausgabecodes werden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Diese Warnung tritt auf, wenn eine Klausel in einer Auswahl von Snowflake nicht unterstützt wird. Folgende Klauseln werden nicht unterstützt:
CONTAINERS
SUBQUERY-RESTRICTION
HIERARCHIES
EXTERNAL-MODIFY
DBLINK
SHARDS
PARTITION
SUBPARTITION
HIERARCHICAL
Beispielcode¶
Eingabecode:¶
SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
Generierter Code:¶
--** 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)
;
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0038¶
Das boolesche Cursorattribut wird nicht unterstützt.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0128.
Beschreibung¶
Diese Meldung weist darauf hin, dass ein boolesches Cursorattribut in SnowScript nicht unterstützt wird oder dass es keine Transformation gibt, die seine Funktionalität in SnowScript emuliert. Die folgende Tabelle zeigt die booleschen Cursorattribute, die emuliert werden können:
Boolesches cursor-Attribut |
Status |
|---|---|
|
Kann emuliert werden |
|
Kann emuliert werden |
|
Nicht unterstützt |
Beispielcode¶
Eingabecode:¶
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;
Generierter Code:¶
--** 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;
$$;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0039¶
Erstellungstyp wird in Snowflake nicht unterstützt
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0007.
Beschreibung¶
Diese Meldung wird hinzugefügt, wenn eine von Snowflake nicht unterstützte „Create Type“-Anweisung verwendet wird.
Beispielcode¶
Eingabecode (Oracle):¶
CREATE TYPE type6 UNDER type5(COL1 INTEGER);
Generierter Code:¶
----** SSC-FDM-OR0039 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE **
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
;
Best Practices¶
Es sind keine Aktionen des Endbenutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0040¶
Numerische Zeichen können in Snowflake nicht geändert werden. Das Dezimaltrennzeichen in Snowflake ist das Punktzeichen.
Beschreibung¶
Numerische Zeichen können in Snowflake nicht geändert werden. Das Dezimaltrennzeichen in Snowflake ist das Punktzeichen. Die ALTER-Sitzungsanweisung wird kommentiert und eine Warnung hinzugefügt.
Beispielcode¶
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 = ',.'
;
Best Practices¶
Es sind keine Aktionen des Endbenutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0041¶
Integriertes Paket wird nicht unterstützt.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0076.
Beschreibung¶
Die Übersetzung von integrierten Paketen wird derzeit nicht unterstützt.
Beispielcode¶
Eingabecode (Oracle):¶
SELECT
UTL_RAW.CAST_TO_RAW('some magic here'),
DBMS_UTILITY.GET_TIME
FROM DUAL;
Generierter Code:¶
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;
Best Practices¶
Es sind keine Aktionen des Endbenutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0042¶
In Zeitstempel transformierter Datumstyp weist ein anderes Verhalten auf
Beschreibung¶
Der Datentyp „Datum“ wird je nach Markierung [–] –disableDateAsTimestamp entweder in Datum oder Zeitstempel umgewandelt, da der Datum-Typ in Snowflake ein anderes Verhalten als in Oracle aufweist.
Wichtige Unterschiede¶
Oracle DATE |
Snowflake DATE |
|
|---|---|---|
Funktionalität |
Speichert Informationen zu Datum und Uhrzeit |
Speichert nur Datumsinformationen (Jahr, Monat, Tag) |
Interner Speicher |
Binäre Zahl, die die Sekunden seit der Epoche angibt |
Kompaktes Format, optimiert für Datumsangaben |
Anwendungsfälle |
Allgemeiner Speicher für Datum und Uhrzeit |
Szenarien, in denen nur Datumsinformationen benötigt werden |
Vorteile |
Unterstützt sowohl Datum als auch Uhrzeit |
Effizientere Speicherung für Datumsangaben |
Einschränkungen |
Datum und Uhrzeit können nicht getrennt gespeichert werden. |
Speichert keine Zeitinformationen |
Beispielcode¶
Eingabecode (Oracle):¶
CREATE TABLE "PUBLIC"."TABLE1"
(
"CREATED_DATE" DATE,
"UPDATED_DATE" DATE
);
Generierter Code:¶
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"}}'
;
Best Practices¶
Es sind keine Aktionen des Endbenutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0043¶
BFILE/BLOB-Parameter werden als Binärwerte betrachtet. Möglicherweise ist ein Format erforderlich.
Beschreibung¶
Dieser Fehler tritt auf, wenn ein TO_CLOB in eine TO_VARCHAR-Funktion konvertiert wird. Möglicherweise ist ein Format für die BFILE/BLOB-Parameter erforderlich.
Beispielcode¶
Eingabecode: ¶
SELECT TO_CLOB('Lorem ipsum dolor sit amet') FROM DUAL;
Generierter Code:¶
SELECT
--** SSC-FDM-OR0043 - BFILE/BLOB PARAMETERS ARE CONSIDERED BINARY, FORMAT MAY BE NEEDED. **
TO_VARCHAR('Lorem ipsum dolor sit amet')
FROM DUAL;
Best Practices¶
Prüfen Sie, ob die Ausgaben im Eingabecode und dem konvertierten Code gleichwertig sind, und fügen Sie bei Bedarf einen Formatparameter hinzu.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0044¶
REGEXP_LIKE_UDF-Übereinstimmungsparameter verhält sich möglicherweise nicht korrekt
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Diese Warnung erscheint, wenn die Oracle-REGEXP_LIKE-Bedingung mit dem dritten Parameter (Match-Parameter) verwendet wird. Der Grund für die Warnung ist, dass die REGEXP_LIKE_UDF, die die REGEXP_LIKE ersetzt, nicht alle vom Match-Parameter verwendeten Zeichen erkennt. Daher kann das Ergebnis der Abfrage in Snowflake möglicherweise nicht dem in Oracle entsprechen.
Beispielcode¶
Oracle-Eingabecode:¶
SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i')
ORDER BY last_name;
Generierter Code:¶
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;
Wenn die
REGEXP_LIKE-Bedingung eines der Zeichen enthält, die von der benutzerdefinierten Funktion nicht unterstützt werden, besteht eine mögliche Lösung darin, den regulären Ausdruck zu ändern, um das Verhalten des fehlenden Zeichens im Übereinstimmungsparameter zu simulieren. Weitere Informationen zum nicht unterstützten Zeichen erhalten Sie unter REGEXP_LIKE_UDF documentation.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0045¶
Partitionsklauseln werden von Snowflake verarbeitet
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0010.
Beschreibung¶
Diese Warnung erscheint, wenn die PARTITION- und SUBPARTITION-Klauseln innerhalb einer Abfrage erscheinen. Snowflake verarbeitet Partitionen automatisch
Beispielcode¶
Eingabecode:¶
SELECT * FROM TABLITA PARTITION(col1);
Generierter Code:¶
SELECT * FROM
TABLITA
-- --** SSC-FDM-OR0045 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE **
-- PARTITION(col1)
;
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0046¶
Die Einschränkung für Unterabfragen ist in Snowflake nicht möglich
Bemerkung
Einige Teile des Ausgabecodes werden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Diese Warnung tritt auf, wenn in einer SELECT-Anweisung eine Subquery-Restriction erscheint.
Beispielcode¶
Eingabecode:¶
SELECT * FROM LATERAL(SELECT * FROM TABLITA WITH READ ONLY CONSTRAINT T);
Generierter Code:¶
SELECT * FROM LATERAL(SELECT * FROM
TABLITA
-- --** SSC-FDM-OR0046 - THE SUBQUERY RESTRICTION IS NOT POSSIBLE IN SNOWFLAKE **
-- WITH READ ONLY CONSTRAINT T
);
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0047¶
Es kann erforderlich sein, ein TimeStampOutput-Format festzulegen.
Beschreibung¶
TIMESTAMP_OUTPUT_FORMAT-Sitzungsparameter muss möglicherweise auf ‚DD-MON-YY HH24.MI.SS.FF AM TZH:TZM‘ festgesetzt werden, um eine Zeitstempelausgabe-Äquivalenz zu erhalten.
Beispielcode¶
Eingabecode: ¶
SELECT SYSTIMESTAMP FROM DUAL;
Beispiel für Standard-TIMESTAMP-Ausgabe in Oracle¶
Ausgabe
13-JAN-21 04.18.37.288656 PM +00:00
Generierter Code:¶
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;
Beispiel für Standard-TIMESTAMP-Ausgabe in Snowflake¶
Ausgabe
2021-01-13 08:18:19.720 -080
Best Practices¶
Um das Format für die Zeitstempelausgabe in Snowflake zu ändern, verwenden Sie die folgende Abfrage:
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'DD-MON-YY HH24.MI.SS.FF AM TZH:TZM';Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0049¶
LAG-Funktion kann fehlschlagen, wenn sich der Standardwerttyp vom Ausdruckstyp unterscheidet.
Beschreibung¶
In Oracle konvertiert die LAG-Funktion automatisch den Datentyp des Standardwerts, sodass er mit dem Typ des Ausdrucks übereinstimmt. Snowflake führt diese implizite Konvertierung jedoch nicht durch. Daher wird eine Warnung ausgegeben, die darauf hinweist, dass die LAG-Funktion fehlschlagen kann, wenn die Datentypen nicht kompatibel sind.
Beispielcode¶
Eingabecode:¶
SELECT
LAG(salary, 2, '0') OVER (ORDER BY salary) AS salary_two_steps_back
FROM
employees;
Generierter Code:¶
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;
Best Practices¶
Überprüfen Sie, ob der Datentyp des Standardwerts mit dem Datentyp des Ausdrucks in der
LAG-Funktion übereinstimmt. Wenn sie unterschiedlich sind, wandeln Sie den Standardwert explizit in den Datentyp des Ausdrucks um.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-OR0050¶
Ausnahmen mit NOCOPY-Parameter können zu Dateninkonsistenzen führen.
Beschreibung¶
In Oracle-PL/SQL wird das NOCOPY-Schlüsselwort als Optimierungshinweis für OUT- und IN OUT-Prozedurparameter verwendet. Standardmäßig übergibt Oracle diese Parameter als Wert, erstellt während des Aufrufs eine teure Kopie der Daten und kopiert diese nach Abschluss wieder zurück. Dies kann bei großen Datenstrukturen einen erheblichen Leistungsaufwand verursachen.
NOCOPY weist Oracle an, stattdessen per Referenz zu übergeben, sodass die Prozedur die ursprünglichen Daten direkt ändern kann. Dies reduziert den Kopieraufwand und verbessert die Leistung. Änderungen sind jedoch sofort wirksam und werden nicht implizit rückgängig gemacht, wenn innerhalb der Prozedur eine unberücksichtigte Ausnahme auftritt.
Deshalb entfernen wir die NOCOPY-Parameteroption und fügen diese FDM hinzu. Dies liegt daran, dass die Ausführung der Prozedur beim Auftreten einer Ausnahme beendet wird und dadurch die RETURN-Anweisung nicht mehr erreicht wird. Infolgedessen behält die Variable im Declare-Block des Aufrufers ihre Anfangswerte bei, da die Prozedur keinen neuen Wert zur Zuweisung erfolgreich zurückliefert.
Beispielcode¶
Eingabecode:¶
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;
Generierter Code:¶
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;
$$;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.