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

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

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

Empfehlung

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;
Copy
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 ***/;
Copy
  • 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 und ORDER 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;
Copy
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;
Copy

Best Practices

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

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

Best Practices

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

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

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 oder INSERT-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;
Copy
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;
  }
$$;
Copy

Best Practices

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
Copy

Weitere wichtige Überlegungen:

  1. Scale _ Y _ legt fest, wie viele Dezimalstellen nach dem Dezimalpunkt erscheinen.

  2. 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;
Copy
Col1   |
-------+
0.00009|
0.00002|
0.01268|

Copy
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;
Copy
Col1   |
-------+
0.00009|
0.00002|
0.01268|

Copy

Best Practices

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

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

Beispielcode

Eingabecode
 COMMIT;
ROLLBACK;
Copy
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;
Copy

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

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

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;
Copy
|CHAR_COLUMN1   |LENGTHB(CHAR_COLUMN1)|LENGTH('HELLOWORLD')|
|---------------|---------------------|--------------------|
|Hello world    |15                   |11                  |


Copy
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;
Copy
|CHAR_COLUMN1|OCTET_LENGTH(CHAR_COLUMN1)|LENGTH('HELLO WORLD')|
|------------|--------------------------|---------------------|
|Hello world |11                        |11                   |


Copy

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

Best Practices

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

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

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

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

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();
Copy
P1                                                |
--------------------------------------------------+
 Loop1:  1 2 3 4 5                                |
 Loop2:  2 3 4 5                                  |
 Loop3:  2 3 4 5                                  |

Copy

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE p1
AS
BEGIN
FOR i NUMBER(5,1) IN 1.2 .. 5.7 LOOP
    NULL;
END LOOP;
END;
Copy
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;
$$;
Copy

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

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

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:

  1. Wenn Sie auf einen Typzugriff verweisen, der nicht aufgelöst wurde

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

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

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

Zugehörige EWIs

  1. 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;
Copy
Ausgabecode:
 SELECT
--** SSC-FDM-OR0027 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE IN SNOWFLAKE **
TO_NUMBER('2,00') "Value" FROM DUAL;
Copy

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 von ON 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;
Copy
Ausgabecode:
 SELECT
--** SSC-FDM-OR0028 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE **
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Copy

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;
Copy
Ausgabecode:
 ----** SSC-FDM-OR0029 - THIS ALTER SESSION CONFIGURATION IS NOT SUPPORTED IN SNOWFLAKE **
--ALTER SESSION SET SQL_TRACE TRUE
                                ;
Copy

Empfehlungen

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

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

Empfehlungen

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;
Copy
 STANDARD_HASH(1+1)                               |
--------------------------------------------------+
 E39323970701D93598FC1D357F4BF04578CE3242         |

Copy
Ausgabecode:
SELECT
--** SSC-FDM-OR0032 - STANDARD HASH FUNCTION WITH INPUT NON-STRING PARAMETER GENERATES A DIFFERENT RESULT IN SNOWFLAKE **
SHA1(1+1)
FROM DUAL;
Copy
 SHA1(1+1)                                        |
--------------------------------------------------+
 da4b9237bacccdf19c0760cab7aec4a8359010b0         |
Copy

Empfehlungen

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

Empfehlungen

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ür identity_options verfügbar ist, kann nur mit ALTER TABLE MODIFY verwendet werden. Wenn Sie START WITH LIMIT VALUE verwenden, wird Oracle Database:

  1. Die Tabelle sperren

  2. Suchen Sie den Maximalwert (für aufsteigende Sequenzen) oder den Minimalwert (für absteigende Sequenzen) in der Identitätsspalte.

  3. Diesen Wert als High Water Mark des Sequenzgenerators festlegen

  4. 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;
Copy
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"}}';
Copy

Empfehlungen

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

Empfehlungen

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

Empfehlungen

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

Empfehlungen

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

%FOUND

Kann emuliert werden

%NOTFOUND

Kann emuliert werden

%ISOPEN

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

Empfehlungen

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);
Copy
Ausgabecode:
 ----** SSC-FDM-OR0039 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE **
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
                                           ;
Copy

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

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

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

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;
Copy
Ausgabecode:
 SELECT
--** SSC-FDM-OR0043 - BFILE/BLOB PARAMETERS ARE CONSIDERED BINARY, FORMAT MAY BE NEEDED. **
TO_VARCHAR('Lorem ipsum dolor sit amet')
FROM DUAL;
Copy

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

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);
Copy
Ausgabecode:
 SELECT * FROM
TABLITA
--        --** SSC-FDM-OR0045 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE **
--        PARTITION(col1)
                       ;
Copy

Empfehlungen

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);
Copy
Ausgabecode:
 SELECT * FROM LATERAL(SELECT * FROM
TABLITA
--        --** SSC-FDM-OR0046 - THE SUBQUERY RESTRICTION IS NOT POSSIBLE IN SNOWFLAKE **
--        WITH READ ONLY CONSTRAINT T
                                   );
Copy

Empfehlungen