SnowConvert: Funktionale Unterschiede in Oracle¶
SSC-FDM-OR0001¶
Bemerkung
Dieser Feature-Erkennungsmechanismus (Feature Detection Mechanism, FDM) ist veraltet und wurde für eine ältere Version von Oracle SnowConvert entwickelt.
Beschreibung¶
Dieser Fehler tritt auf, wenn ein Problem beim Schreiben der Bewertungsberichtsdatei auftritt. Das System kann die Bewertungsdetails nicht richtig speichern oder generieren.
Best Practices¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0002¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0068
Beschreibung¶
Dieser Fehler tritt auf, wenn der Wert von START WITH
größer ist als der maximal zulässige Wert von Snowflake. Laut der Snowflake-Dokumentation muss der Startwert der Sequenz im Bereich einer 64-Bit-Zweierkomplement-Ganzzahl liegen: von -2^63
bis 2^63-1
. Das bedeutet, dass die maximal zulässigen Werte sind:
Positive Zahlen: 9223372036854775807
Negative Zahlen: 9223372036854775808
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¶
Wir empfehlen, die Sequenz zurückzusetzen und ihre Verwendung anzupassen. NOTE: Vergewissern Sie sich, dass die Zielspalte über genügend Kapazität verfügt, um diesen Wert zu speichern.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0003¶
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie in der Dokumentation zu SSC-EWI-OR0038.
Beschreibung¶
Die [search_clause
](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SELECT. html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__I2077142) steuert, wie Zeilen in einer SELECT-Anweisung verarbeitet werden, indem sie ihre Reihenfolge festlegt. Während Sie mit diesem Feature in Oracle die Art und Weise, wie Daten durchlaufen und zurückgegeben werden, anpassen können, ist dies in Snowflake nicht möglich.
In Oracle und ähnlichen Datenbanken hilft die [search_clause
](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SELECT. html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__I2077142) zu steuern, wie hierarchische Daten in rekursiven Abfragen oder allgemeinen Tabellenausdrücken (Common Table Expressions, CTEs) verarbeitet werden. Wenn Sie Spalten in der search_clause
angeben, können Sie wählen, ob Sie die Daten in der Tiefe (depth-first, tief in jede Verzweigung hinein) oder in der Breite (breadth-first, Ebene für Ebene) verarbeiten möchten, was die Reihenfolge der Ergebnisse bestimmt.
In Snowflake wird eine [search_clause
](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SELECT. html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__I2077142)-Meldung generiert und dann 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¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0004¶
Beschreibung¶
In Oracle wird die ORDER BY SIBLINGS-Klausel in hierarchischen Abfragen verwendet, um die hierarchische Struktur beim Sortieren von Geschwisterdatensätzen (Datensätze auf derselben Ebene) beizubehalten. Dieses Feature ist in Snowflake nicht verfügbar.
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 ***/;
Obwohl die genaue Reihenfolge, die die SIBLINGS-Klausel bereitstellt, nicht direkt verfügbar ist, können Sie mit diesen Methoden ähnliche Ergebnisse erzielen:
Schließen Sie Ihre Abfrage in eine andere Abfrage ein, und verwenden Sie
ORDER BY
, um die Ergebnisse zu sortieren.Erstellen Sie zunächst mit
CONNECT BY
einen allgemeinen Tabellenausdruck (Common Table Expression, CTE), der Ihre hierarchische Abfrage enthält. Erstellen Sie dann eine weitere Abfrage, die diesen CTE referenziert undORDER BY
verwendet, um Geschwister (Zeilen auf derselben hierarchischen Ebene) zu sortieren.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0005¶
Beschreibung¶
Snowflake unterstützt keine Synonyme. Alle Synonyme werden in ihre ursprünglichen Objektnamen konvertiert.
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¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0006¶
Beschreibung¶
Diese Warnung erscheint, wenn eine NOT NULL-Spalteneinschränkung einen der Oracle-Einschränkungsstatus in der Inline-Definition der Spalte enthält.
[ RELY | NORELY | RELY DISABLE | RELY ENABLE | VALIDATE | NOVALIDATE ]
Da Snowflake diese Status nicht unterstützt, wird die 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¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0007¶
Beschreibung¶
Snowflake unterstützt keine Objektversionierung. Infolgedessen wird der Modifikator EDITIONABLE oder NONEDITIONABLE während der Codekonvertierung entfernt, und eine Warnmeldung wird erzeugt.
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¶
Ziehen Sie verschiedene Methoden zur Verwaltung von Codeversionen in Betracht.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-FDM-OR0008¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0071.
Beschreibung¶
Der Quantifizierer „all“ wird in Snowflake SQL nicht unterstützt. Bei der Konvertierung Ihres Codes wird dieser Modifikator entfernt, und Sie erhalten eine Warnmeldung. Bitte beachten Sie, dass diese Änderung dazu führen kann, dass Ihre Abfrage andere Ergebnisse liefert als erwartet.
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 Operatoren INTERSECT
und MINUS/EXCEPT
automatisch doppelte Werte aus dem Resultset.
Best Practices¶
Erkunden Sie die entsprechenden Optionen von Snowflake, um die Funktionalität des Quantifizierers „all“ zu ersetzen.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-FDM-OR0009¶
Beschreibung¶
Bemerkung
Um Prozeduren und Makros in JavaScript zu erstellen, fügen Sie entweder -t JavaScript
oder --PLTargetLanguage JavaScript
zu Ihrem Befehl hinzu.
Bemerkung
Der Übersichtlichkeit halber haben wir einige Abschnitte des Ausgabecodes vereinfacht.
Diese Warnung erscheint, wenn implizite SQL-Cursorwerte verwendet werden. Oracle behandelt diese Werte je nach Abfragetyp unterschiedlich:
Für
SELECT
-Anweisungen: Der Wert gibt die Anzahl der zurückgegebenen Zeilen an.Für
UPDATE
-,CREATE
-DELETE
oderINSERT
-Anweisungen: Der Wert gibt die Anzahl der betroffenen Zeilen an.
Dieser Unterschied im Verhalten ist der Grund, warum die Warnung 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 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¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0010¶
Beschreibung¶
Der Datentyp NUMBER
wird verwendet, um sowohl Festkommazahlen als auch Gleitkommazahlen zu speichern. Er funktioniert konsistent unter allen Betriebssystemen, unter denen Oracle Database läuft. Oracle empfiehlt die Verwendung des Datentyps NUMBER
als erste Wahl für die Speicherung numerischer Werte. Das Format lautet NUMBER (X, Y)
, wobei _ X _ für die Genauigkeit (Gesamtzahl der Ziffern) und _ Y _ für die Anzahl der Dezimalstellen steht.
Zum Beispiel steht NUMBER(5, 3)
für ein Zahlenformat mit _ 2 _ Ziffern vor dem Dezimalpunkt und _ 3 _ Ziffern nach dem Dezimalpunkt.
12.345
Weitere wichtige Überlegungen:
Scale _ Y _ legt fest, wie viele Dezimalstellen nach dem Dezimalpunkt erscheinen.
Scale-Precision _ Y-X _ legt die Mindestanzahl der nachstehenden Nullen nach dem Dezimalpunkt fest.
Diese Meldung erscheint, wenn ein NUMBER
-Datentyp einen Genauigkeitswert hat, der kleiner ist als sein Wert für die Anzahl der Dezimalstellen. Da Snowflake diese Konfiguration nicht unterstützt, wird der Genauigkeitswert automatisch erhöht, um die Datenkonsistenz zu wahren.
Bemerkung
Bitte beachten Sie, dass dieses Problem in Kombination mit anderen bekannten Transformationen auftreten kann, oder dass es überhaupt nicht auftritt. Wenn zum Beispiel der Scale-Wert durch neunzehn ersetzt wird und die vorherige Genauigkeit größer als neunzehn ist, erscheint diese Meldung NICHT.
Beispielcode¶
Eingabecode:¶
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;
Col1 |
-------+
0.00009|
0.00002|
0.01268|
Generierter Code:¶
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;
Col1 |
-------+
0.00009|
0.00002|
0.01268|
Best Practices¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0011¶
Beschreibung¶
Diese Warnung erscheint, wenn der Migrationsprozess das dritte optionale Argument aus _RAISE_APLICATION_ERROR entfernt, da dieses Feature in Snowflake nicht verfügbar ist.
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:¶
--** SSC-FDM-0029 - 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":1, "minor":0},"attributes":{"component":"oracle"}}'
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¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0012¶
Beschreibung¶
Bevor Sie die Anweisungen COMMIT und ROLLBACK in Snowflake verwenden, müssen Sie zunächst bestimmte Einrichtungsanweisungen ausführen, um sicherzustellen, dass sie korrekt funktionieren. Diese Anweisungen erfordern eine ordnungsgemäße Konfiguration, damit sie wie erwartet funktionieren.
ALTER SESSION SET AUTOCOMMIT = false;
Beispielcode¶
Eingabecode¶
COMMIT;
ROLLBACK;
Ausgabecode¶
--** 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 Abfrage aus, die im Beschreibungsabschnitt angegeben ist, bevor Sie Ihren Code ausführen.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com.
SSC-FDM-OR0013¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0039.
Beschreibung¶
Diese Meldung erscheint, wenn SnowConvert eine Abfrage erkennt, die eine CYCLE-Klausel enthält. Da Snowflake keine CYCLE-Klauseln unterstützt, kommentiert SnowConvert diesen Code bei der Konvertierung automatisch aus.
Diese Anweisung zeigt an, wenn eine rekursive Operation stattfindet.
Weitere Informationen über die Funktionalität der Klausel finden Sie in der Dokumentation.
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 Ihre Datenhierarchie Zyklen enthält, lesen Sie diesen Artikel, um zu erfahren, wie Sie diese behandeln können.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0014¶
Beschreibung¶
Dieser Fehler tritt auf, wenn der Datentyp eines Fremdschlüssels nicht mit dem Datentyp der referenzierten Spalte ü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
Der Fehler tritt auf, weil die Spalten „COL1“ in „MyDb“.“MyTable1“ und „MyDb“.“MyTable“ unterschiedliche Datentypen haben.
Best Practices¶
Wenn Ihre Datenhierarchie Zyklen enthält, lesen Sie diesen Artikel, um zu erfahren, wie Sie diese behandeln können.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0015¶
Beschreibung¶
Dieses Problem tritt auf, wenn Sie die Funktion LENGTHB, die die Größe einer Spalte oder eines Literalwerts in Bytes berechnet, verwenden. Bei der Migration wird diese Funktion automatisch in die Funktion OCTET_LENGTH von Snowflake konvertiert.
Wenn Sie diese Funktion mit einem Spaltenparameter verwenden, berechnet sie die Größe des Spaltenwerts. Die resultierende Größe kann sich zwischen Oracle und Snowflake unterscheiden, da sie vom Datentyp der Spalte abhängt.
Beispielcode¶
Eingabecode:¶
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;
|CHAR_COLUMN1 |LENGTHB(CHAR_COLUMN1)|LENGTH('HELLOWORLD')|
|---------------|---------------------|--------------------|
|Hello world |15 |11 |
Generierter Code:¶
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;
|CHAR_COLUMN1|OCTET_LENGTH(CHAR_COLUMN1)|LENGTH('HELLO WORLD')|
|------------|--------------------------|---------------------|
|Hello world |11 |11 |
Best Practices¶
Überprüfen Sie die in Ihrem Code verwendeten Datentypen.
Überprüfen Sie die Spaltencodierung, da OCTET_LENGTH für Zeichenfolgen, die Unicode-Zeichen enthalten, größere Größen anzeigen kann.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-FDM-OR0016¶
Beschreibung¶
COMMIT und ROLLBACK werden nicht mehr benötigt, da Snowflake diese Operationen automatisch durchführt.
Beispielcode¶
Eingabecode¶
COMMIT WORK FORCE '22.57.53';
ROLLBACK WORK FORCE '22.57.53';
Ausgabecode¶
--** 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 zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0017¶
Beschreibung¶
Der Ausdruck AT TIME ZONE unterstützt nicht mehr das Schlüsselwort DBTIMEZONE.
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¶
Legen Sie den Sitzungsparameter TIMEZONE fest, um konsistente Ergebnisse zu gewährleisten.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-FDM-OR0018¶
Beschreibung¶
Diese Warnung weist darauf hin, dass es funktionale Unterschiede zwischen der MERGE-Anweisung von Oracle und der Implementierung der MERGE-Anweisung von Snowflake geben kann.
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 Ihre Ergebnisse von denen von Oracle abweichen, sollten Sie die folgenden Schritte ausführen:
Überprüfen Sie die hier beschriebenen Prioritäten der Ausführungsreihenfolge.
Führen Sie alle übersprungenen DML-Anweisungen entweder vor oder nach der MERGE-Anweisung aus, je nach Bedarf.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-FDM-OR0019¶
Beschreibung¶
Diese Warnung erscheint, wenn eine ROWS-Fensterrahmeneinheit in Ihrem Quellcode entdeckt wird.
Die Funktion ROWS verwendet die physische Reihenfolge der Zeilen in der Datenbank, die bei der Migration auf eine andere Plattform variieren kann. Um Inkonsistenzen zu vermeiden, können Sie explizite ORDER BY-Klauseln hinzufügen, um eine konsistente Zeilenreihenfolge zu gewährleisten.
Bemerkung
Laut der Oracle-Dokumentation verhalten sich analytische Funktionen je nach ihrem Offset-Typ unterschiedlich:
Logische Offset-Funktionen liefern immer deterministische Ergebnisse.
Physische Offset-Funktionen können nicht-deterministische Ergebnisse liefern, wenn Sie nicht für eine eindeutige Reihenfolge sorgen.
Um eine eindeutige Reihenfolge zu erreichen, müssen Sie möglicherweise mehrere Spalten in die
order_by_clause
aufnehmen.
Um mögliche Probleme zu vermeiden, wird empfohlen zu überprüfen, ob die Funktion konsistente (deterministische) Ergebnisse liefert, bevor Sie fortfahren.
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¶
Fügen Sie eine ORDER BY-Klausel zu Ihren Abfragen hinzu, um eine konsistente Zeilenreihenfolge in den Snowflake-Ergebnissen zu gewährleisten.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-FDM-OR0020¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0051.
Beschreibung¶
Diese Warnung erscheint, wenn Sie die Funktion PRAGMA EXCEPTION_INIT innerhalb einer Prozedur verwenden. Der Name der Ausnahme und der SQL-Fehlercode sind in der Funktion RAISE definiert. Bei der Konvertierung in Snowflake Scripting wird der SQL-Fehlercode in die Ausnahmedeklaration aufgenommen. Einige Fehlercodes sind jedoch in Snowflake Scripting möglicherweise nicht gültig.
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¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0021¶
Beschreibung¶
Die FOR LOOP
-Bedingung in Snowflake Scripting erfordert einen INTEGER
-Wert oder einen Ausdruck, der ein INTEGER
ergibt. Wenn Sie Gleitkommazahlen verwenden, werden diese automatisch gerundet, wodurch sich Ihre beabsichtigte Schleifenbegrenzung ändern kann.
Die untere Begrenzung wird auf die nächste ganze Zahl abgerundet. Beispiel:
3.1 -> 3, 6.7 -> 7, 4.5 -> 5
Die obere Begrenzung wird auf die nächste ganze Zahl abgerundet. Beispiel:
3.1 -> 3, 6.7 -> 6, 4.5 -> 4
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();
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":1, "minor":0},{"attributes":{"component":"oracle"}}'
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 **
FOR i IN 1.2 TO 5.7 LOOP
NULL;
END LOOP;
END;
$$;
Best Practices¶
Ändern Sie die FOR LOOP-Bedingung, um Ganzzahlwerte anstelle anderer Datentypen zu verwenden.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0022¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0100.
Beschreibung¶
FOR LOOP
in Snowflake Scripting unterstützt nur eine Bedingung, im Gegensatz zu Oracle, das mehrere Bedingungen zulässt. Bei der Migration von Oracle wird nur die erste Bedingung transformiert, und alle weiteren Bedingungen werden 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¶
Zerlegen Sie komplexe
FOR LOOP
-Anweisungen in mehrere, einfachere Schleifen, oder schreiben Sie zur besseren Übersichtlichkeit die Schleifenbedingung neu.Wenn Sie weitere Hilfe benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-FDM-OR0023¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0099.
Beschreibung¶
Diese Warnung erscheint, wenn eine Ausnahmecodenummer außerhalb des zulässigen Bereichs für Snowflake Scripting-Ausnahmen liegt. Gültige Ausnahmecodes müssen Ganzzahlen zwischen -20000 und -20999 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¶
Stellen Sie sicher, dass Ihr Ausnahmecode innerhalb des von Snowflake Scripting erlaubten Bereichs liegt. Wenn dies nicht der Fall ist, wählen Sie eine andere verfügbare Ausnahmenummer.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-FDM-OR0024¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0002.
Beschreibung¶
Dieser Fehler tritt auf, wenn das System die Spalten in einem SELECT-Ausdruck nicht auflösen kann. Dies geschieht in der Regel in zwei Szenarien:
Wenn Sie auf einen Typzugriff verweisen, der nicht aufgelöst wurde
Wenn Sie eine Spalte mit einem benutzerdefinierten Typ verwenden, der keine Spaltendefinitionen enthält (z. B. ein Typ ohne Body oder ein Objekttyp ohne definierte 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 referenzierte Typdefinition Spaltendefinitionen enthält.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-FDM-OR0025¶
Beschreibung¶
Die Einschränkung NOT NULL
, die in Oracle-Variablendeklarationen innerhalb von Prozeduren verwendet wird, ist in Snowflake-Prozedurvariablendeklarationen nicht verfügbar.
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;
$$;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0026¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0045.
Beschreibung¶
Dieser Fehler tritt auf, wenn Sie versuchen, Daten in einen nicht unterstützten Datentyp zu konvertieren.
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 format-Parameter kann in diesem Zusammenhang nicht verwendet werden.
Empfehlungen¶
Die cast-Operation wird in eine benutzerdefinierte Funktion umgewandelt (UDF/Stub), mit der Sie das Verhalten der cast-Funktion anpassen können.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0027¶
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie in der Dokumentation zu SSC-EWI-OR0029.
Beschreibung¶
Snowflake unterstützt das Feature „DEFAULT ON CONVERSION ERROR“ nicht.
Beispielcode¶
Eingabecode:¶
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
Ausgabecode:¶
SELECT
--** SSC-FDM-OR0027 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE IN SNOWFLAKE **
TO_NUMBER('2,00') "Value" FROM DUAL;
Empfehlungen¶
Ziehen Sie in Erwägung, eine benutzerdefinierte Funktion (User-Defined Function, UDF) zu erstellen, um die Funktionalität des
DEFAULT
-Werts bei der Behandlung vonON CONVERSION ERROR
zu replizieren.Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0028¶
Bemerkung
Diese FDM ist veraltet. Die aktuelle Dokumentation finden Sie unter SSC-EWI-OR0031.
Beschreibung¶
Dieser Fehler tritt auf, wenn Sie versuchen, einen nicht unterstützten Parameter in der Funktion SYS_CONTEXT zu verwenden.
Beispielcode¶
Eingabecode:¶
SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Ausgabecode:¶
SELECT
--** SSC-FDM-OR0028 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE **
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Empfehlungen¶
Die Funktion wird in eine benutzerdefinierte Funktion (UDF/Stub) konvertiert, die Sie ändern können, um das Verhalten des Parameters SYS_CONTEXT zu replizieren.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0029¶
Beschreibung¶
Die Anweisung ALTER SESSION enthält eine Klausel oder Konfiguration, die in der aktuellen Version nicht unterstützt wird.
Beispielcode¶
Eingabecode:¶
ALTER SESSION SET SQL_TRACE TRUE;
Ausgabecode:¶
----** SSC-FDM-OR0029 - THIS ALTER SESSION CONFIGURATION IS NOT SUPPORTED IN SNOWFLAKE **
--ALTER SESSION SET SQL_TRACE TRUE
;
Empfehlungen¶
Entsprechende Sitzungsvariablen finden Sie in der Snowflake-Dokumentation.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0030¶
Beschreibung¶
Wenn eine Abfrage ROWID als Pseudospalte enthält, wird sie in NULL konvertiert, um Laufzeitfehler zu vermeiden, und es wird eine EWI-Meldung (Error, Warning, Information) generiert. Derzeit gibt es kein Feature, das die Funktionalität von ROWID repliziert.
Beispielcode¶
Oracle-Eingabecode:¶
SELECT ROWID FROM T1;
Ausgabecode:¶
SELECT
--** SSC-FDM-OR0030 - ROWID PSEUDOCOLUMN IS NOT SUPPORTED IN SNOWFLAKE, IT WAS CONVERTED TO NULL TO AVOID RUNTIME ERRORS **
'' AS ROWID
FROM
T1;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0031¶
Beschreibung¶
Dieser Fehler zeigt an, dass die DML-Anweisungen von Snowflake die error_logging-Klausel nicht unterstützen, ein Feature, das in den DML-Anweisungen von Oracle verfügbar ist.
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;
Ausgabecode:¶
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
;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0032¶
Beschreibung¶
Diese Warnung erscheint, wenn Sie die Funktion STANDARD_HASH
von Oracle mit Nicht-Zeichenfolgen-Parametern verwenden, da sie bei der Migration nach Snowflake möglicherweise andere Ergebnisse liefert.
Beispielcode¶
Eingabecode:¶
SELECT STANDARD_HASH(1+1) FROM DUAL;
STANDARD_HASH(1+1) |
--------------------------------------------------+
E39323970701D93598FC1D357F4BF04578CE3242 |
Ausgabecode:¶
SELECT
--** SSC-FDM-OR0032 - STANDARD HASH FUNCTION WITH INPUT NON-STRING PARAMETER GENERATES A DIFFERENT RESULT IN SNOWFLAKE **
SHA1(1+1)
FROM DUAL;
SHA1(1+1) |
--------------------------------------------------+
da4b9237bacccdf19c0760cab7aec4a8359010b0 |
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0033¶
Beschreibung
Diese Warnung erscheint, wenn SnowConvert eine integrierte DBMS_RANDOM.VALUE-Oracle-Paketfunktion migriert. Die benutzerdefinierte Funktion (User-Defined Function, UDF), die erstellt wurde, um diese Funktionalität zu replizieren, hat eine geringere Genauigkeit als die ursprüngliche Oracle-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;
Ausgabecode:¶
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;
$$;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0034¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie in der Dokumentation zu SSC-EWI-OR0001.
Beschreibung¶
Dieser Fehler tritt auf, wenn der Wert in der START WITH
-Anweisung auf LIMIT VALUE
gesetzt ist.
In Oracle wird diese Klausel nur mit der ALTER TABLE-Anweisung verwendet.
Die Option
START WITH LIMIT VALUE
, die nur füridentity_options
verfügbar ist, kann nur mitALTER TABLE MODIFY
verwendet werden. Wenn SieSTART WITH LIMIT VALUE
verwenden, wird Oracle Database:
Die Tabelle sperren
Suchen Sie den Maximalwert (für aufsteigende Sequenzen) oder den Minimalwert (für absteigende Sequenzen) in der Identitätsspalte.
Diesen Wert als High Water Mark des Sequenzgenerators festlegen
Generieren Sie den nächsten Wert, indem Sie den
INCREMENT BY
-Wert zur High Water Mark addieren (bei aufsteigenden Sequenzen) oder von ihr subtrahieren (bei absteigenden Sequenzen).
ALTER TABLE ORACLE¶
Beispielcode¶
Eingabecode:¶
CREATE SEQUENCE SEQUENCE1
START WITH LIMIT VALUE;
Ausgabecode:¶
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"}}';
Empfehlungen¶
Von Ihrer Seite aus ist keine Aktion erforderlich.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com.
SSC-FDM-OR0035¶
Beschreibung¶
Diese Warnung erscheint, wenn SnowConvert eine integrierte DBMS_OUTPUT.PUT_LINE
-Oracle-Paketfunktion migriert. Sie sollten die generierte benutzerdefinierte Funktion (User-Defined Function, UDF) überprüfen, um sicherzustellen, dass sie wie erwartet funktioniert.
Diese Warnmeldung zeigt an, dass Sie die Implementierung von DBMS_OUTPUT.PUT_LINE_UDF
überprüfen müssen, um zusätzliche Informationen zu erhalten.
Warnung
Diese UDF kann die Leistung beeinträchtigen. Um die Protokollierung zu aktivieren, kommentieren Sie den Implementierungscode aus. Bitte beachten Sie, dass in der aktuellen Einrichtung eine temporäre Tabelle verwendet wird. Wenn Sie die Daten über mehrere Sitzungen hinweg beibehalten wollen, entfernen Sie das Schlüsselwort TEMPORARY aus der CREATE TABLE-Anweisung.
Nachdem Sie die Funktion DBMS_OUTPUT.PUT_LINE_UDF
ausgeführt haben, können Sie alle Protokolle einsehen, indem Sie diese Abfrage ausführen:
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;
Ausgabecode:¶
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;
$$;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0036¶
Beschreibung¶
Diese Meldung erscheint, wenn SnowConvert bei der Migration einer integrierten Oracle-Paketprozedur oder -funktion bestimmte Argumente entfernt.
Ursprüngliche Parameter, die in Snowflake keine Entsprechung haben oder nicht mehr benötigt werden, werden aus dem konvertierten Code entfernt. Diese Parameter werden jedoch in den EWI-Meldungen (Error, Warning, Information) zu Referenz- und Nachverfolgungszwecken dokumentiert.
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;
Ausgabecode:¶
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;
$$;
Empfehlungen¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0037¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0004.
Bemerkung
Zur besseren Lesbarkeit haben wir einige Abschnitte des Codes in diesem Beispiel vereinfacht.
Beschreibung¶
Diese Warnung erscheint, wenn eine SELECT-Anweisung eine Klause enthält, die von Snowflake nicht unterstützt wird. Die folgenden Klauseln werden nicht unterstützt:
Containerdatenbanken und Pluggable Databases
Beschränkungen für Unterabfragen
Hierarchische Datenstrukturen und Abfragen
Änderungen externer Tabellen
Datenbanklinks und datenbankübergreifende Verbindungen
Konfigurationen für das Sharding von Datenbanken
Tabellenpartitionierung
Tabellenunterpartitionierung
Hierarchische Abfrageoperationen
Beispielcode¶
Eingabecode:¶
SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
Ausgabecode:¶
--** 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)
;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0038¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0128.
Beschreibung¶
Diese Meldung zeigt an, dass ein boolesches cursor-Attribut in SnowScript nicht verwendet werden kann, entweder weil es nicht unterstützt wird oder weil es keine gleichwertige Funktionalität gibt. In der folgenden Tabelle sind die booleschen cursor-Attribute aufgeführt, die in SnowScript repliziert 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;
Ausgabecode:¶
--** 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;
$$;
Empfehlungen¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0039¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0007.
Beschreibung¶
Diese Meldung erscheint, wenn Sie versuchen, eine CREATE TYPE-Anweisung zu verwenden, die von Snowflake nicht unterstützt wird.
Beispielcode¶
Eingabecode (Oracle):¶
CREATE TYPE type6 UNDER type5(COL1 INTEGER);
Ausgabecode:¶
----** SSC-FDM-OR0039 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE **
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0040¶
Beschreibung¶
Snowflake erlaubt keine Änderung von numerischen Werten. In Snowflake werden Dezimalzahlen immer mit einem Punkt (.) als Dezimaltrennzeichen dargestellt. Die ALTER SESSION-Anweisung wurde auskommentiert, und eine Warnmeldung wurde 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 = ',.'
;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0041¶
Bemerkung
Diese FDM wird nicht mehr unterstützt. Weitere Informationen finden Sie unter SSC-EWI-OR0076
Beschreibung¶
Integrierte Paketübersetzung ist derzeit nicht verfügbar.
Beispielcode¶
Eingabecode (Oracle):¶
SELECT
UTL_RAW.CAST_TO_RAW('some magic here'),
DBMS_UTILITY.GET_TIME
FROM DUAL;
Ausgabecode:¶
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;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0042¶
Beschreibung¶
Der Datentyp Date wird in den Snowflake-Datentyp Date oder Timestamp konvertiert. Diese Konvertierung hängt von dem Flag –disableDateAsTimestamp ab, da sich der Date-Typ von Snowflake anders verhält als der Date-Typ von Oracle.
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
);
Ausgabecode:¶
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"}}'
;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0043¶
Beschreibung¶
Dieser Fehler tritt auf, wenn Sie eine TO_CLOB-Funktion in TO_VARCHAR konvertieren. Wenn Sie mit dem BFILE- oder BLOB-Parameter arbeiten, müssen Sie eventuell einen format-Parameter für die richtige Konvertierung angeben.
Beispielcode¶
Eingabecode:¶
SELECT TO_CLOB('Lorem ipsum dolor sit amet') FROM DUAL;
Ausgabecode:¶
SELECT
--** SSC-FDM-OR0043 - BFILE/BLOB PARAMETERS ARE CONSIDERED BINARY, FORMAT MAY BE NEEDED. **
TO_VARCHAR('Lorem ipsum dolor sit amet')
FROM DUAL;
Empfehlungen¶
Überprüfen Sie, ob die Ausgabeergebnisse zwischen dem ursprünglichen Code und dem konvertierten Code übereinstimmen. Fügen Sie bei Bedarf einen Formatparameter hinzu, um die Kompatibilität zu gewährleisten.
Wenn Sie weitere Hilfe benötigen, wenden Sie sich an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-FDM-OR0044¶
Bemerkung
Der Übersichtlichkeit halber haben wir den Code vereinfacht, indem wir einige Teile weggelassen haben.
Beschreibung¶
Diese Warnung erscheint, wenn Sie die Funktion REGEXP_LIKE
von Oracle mit einem Abgleichparameter (dritter Parameter) verwenden. Die Warnung weist darauf hin, dass die Funktion REGEXP_LIKE_UDF
in Snowflake, die die Funktion REGEXP_LIKE
von Oracle ersetzt, möglicherweise nicht alle Zeichen des Abgleichparameters unterstützt. Infolgedessen kann die Ausgabe der Abfrage in Snowflake von der in Oracle abweichen.
Beispielcode¶
Oracle-Eingabecode:¶
SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i')
ORDER BY last_name;
Ausgabecode:¶
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 Ihre
REGEXP_LIKE
-Bedingung nicht unterstützte Zeichen in der benutzerdefinierten Funktion enthält, sollten Sie den regulären Ausdruck so ändern, dass das gleiche Suchverhalten ohne diese Zeichen erreicht wird. Eine vollständige Liste der nicht unterstützten Zeichen finden Sie in der Dokumentation zu REGEXP_LIKE_UDF.Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0047¶
Beschreibung¶
Der Sitzungsparameter TIMESTAMP_OUTPUT_FORMAT sollte auf DD-MON-YY HH24.MI.SS.FF AM TZH:TZM gesetzt werden, um sicherzustellen, dass die Zeitstempel im richtigen Format angezeigt werden und der erwarteten Ausgabe entsprechen.
Beispielcode¶
Eingabecode:¶
SELECT SYSTIMESTAMP FROM DUAL;
Beispiel für das TIMESTAMP-Standardformat von Oracle¶
13-JAN-21 04:18:37.288656 PM UTC
Ausgabecode:¶
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;
Wie Snowflake TIMESTAMPS standardmäßig anzeigt¶
2021-01-13 08:18:19.720 -080
Recommendations
Um zu ändern, wie Zeitstempel in Snowflake angezeigt werden, führen Sie diese Abfrage aus:
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'DD-MON-YY HH24.MI.SS.FF AM TZH:TZM';
Wenn Sie weitere Hilfe benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-FDM-OR0045
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie in der Dokumentation zu SSC-EWI-OR0010.
Beschreibung¶
Diese Warnung erscheint, wenn die Klauseln PARTITION
und SUBPARTITION
in einer Abfrage verwendet werden. Snowflake verwaltet die Datenpartitionierung automatisch, sodass diese Klauseln nicht erforderlich sind.
Beispielcode¶
Eingabecode:¶
SELECT * FROM TABLITA PARTITION(col1);
Ausgabecode:¶
SELECT * FROM
TABLITA
-- --** SSC-FDM-OR0045 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE **
-- PARTITION(col1)
;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-OR0046¶
Bemerkung
Zur besseren Lesbarkeit haben wir einige Abschnitte des Codes in diesem Beispiel vereinfacht.
Beschreibung¶
Diese Warnung tritt auf, wenn eine Unterabfrageneinschränkung innerhalb einer SELECT
-Anweisung gefunden wird.
Beispielcode¶
Eingabecode:¶
SELECT * FROM LATERAL(SELECT * FROM TABLITA WITH READ ONLY CONSTRAINT T);
Ausgabecode:¶
SELECT * FROM LATERAL(SELECT * FROM
TABLITA
-- --** SSC-FDM-OR0046 - THE SUBQUERY RESTRICTION IS NOT POSSIBLE IN SNOWFLAKE **
-- WITH READ ONLY CONSTRAINT T
);
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com