SnowConvert AI – Funktionale Unterschiede bei Oracle

SSC-FDM-OR0001

Bemerkung

Diese FDM wurde für eine alte Version von Oracle SnowConvert AI hinzugefügt. Derzeit ist sie veraltet.

Beschreibung

Dieser Fehler hängt mit der Berichtsdatei Assessment zusammen. Sie erscheint, wenn ein Fehler beim Schreiben der Berichtsdatei mit den Bewertungsdetails auftritt.

Best Practices

SSC-FDM-OR0002

Der Wert für den Start der Sequenz überschreitet den von Snowflake zulässigen Maximalwert.

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0068.

Beschreibung

Dieser Fehler tritt auf, wenn der START WITH-Anweisungswert den von Snowflake zulässigen Höchstwert überschreitet. Snowflake hat Folgendes zum Startwert angegeben: Gibt den ersten Wert an, der von der Sequenz zurückgegeben wird. Unterstützte Werte sind alle Werte, die durch die Komplementärganzzahl eines 64-Bit-Zweiers dargestellt werden können (von -2^63 to 2^63-1). Gemäß dem zuvor erwähnten ist der zulässige Höchstwert also 9223372036854775807 für positive Zahlen und 9223372036854775808 für negative Zahlen.

Beispielcode

Eingabecode:
 CREATE SEQUENCE SEQUENCE1
START WITH 9223372036854775808;
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

  • Es kann empfohlen werden, einfach die Sequenz zurückzusetzen und auch die Verwendung zu ändern. NOTE: Die Zielspalte muss genügend Platz haben, um diesen Wert aufzunehmen.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0003

Suchklausel wurde aus der With-Element-Anweisung entfernt.

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0038.

Beschreibung

Die search_clause wird verwendet, um die Reihenfolge festzulegen, in der Zeilen in einer SELECT-Anweisung verarbeitet werden. Diese Funktion ermöglicht ein individuelles Durchlaufen der Daten und stellt sicher, dass die Ergebnisse in einer bestimmten Sequenz auf der Grundlage der angegebenen Kriterien zurückgegeben werden. Es ist jedoch wichtig zu beachten, dass dieses Verhalten, das durch die search_clause gekennzeichnet ist, in Snowflake nicht unterstützt wird.

In Datenbanken wie Oracle wird die search_clause häufig in Verbindung mit rekursiven Abfragen oder Common Table Expressions (CTEs) verwendet, um die Reihenfolge zu beeinflussen, in der hierarchische Daten durchsucht werden. Durch die Angabe einer bestimmten Spalte oder einer Gruppe von Spalten in der search_clause können Sie die Tiefensuche- oder Breitensuche-Traversal der Hierarchie steuern und damit die Reihenfolge beeinflussen, in der die Zeilen verarbeitet werden.

In Snowflake wird eine search_clause-Meldung generiert und die search_clause anschließend entfernt.

Beispielcode

Eingabecode:
 WITH dup_hiredate(eid, emp_last, mgr_id, reportLevel, hire_date, job_id) AS 
(SELECT aValue from atable) SEARCH DEPTH FIRST BY hire_date SET order1 SELECT aValue from atable;
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

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0004

Das Schlüsselwort für Elemente wurde aus der Klausel „order by“ entfernt, da Snowflake es nicht unterstützt.

Beschreibung

In Oracle kann die ORDER BY SIBLINGS-Klausel in hierarchischen Abfragen verwendet werden, um die durch die Hierarchie vorgegebene Reihenfolge der Daten beizubehalten, während gleichzeitig eine Neuordnung der Werte vorgenommen wird, die Geschwister in derselben Hierarchie sind. Dies wird von Snowflake nicht unterstützt.

Beispielcode

Eingabecode:
 SELECT LEVEL,
       LPAD(' ', 2 * (LEVEL - 1)) || NAME AS FORMATTED_NAME,
       JOB_TITLE
FROM EMPLOYEES
START WITH MANAGER_ID IS NULL
CONNECT BY PRIOR EMPLOYEE_ID = MANAGER_ID
ORDER SIBLINGS BY NAME;
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
  • Während die genau gleiche Reihenfolge, die mit der SIBLINGS-Klausel erreicht wurde, möglicherweise nicht zugänglich ist, gibt es einige Alternativen, um ein ähnliches Ergebnis zu erzielen.

    • Betten Sie die Abfrage in eine äußere Abfrage ein, die die gewünschte Sortierung mit ORDER BY anwendet.

    • Erstellen Sie eine CTE mit der hierarchischen Abfrage unter Verwendung von CONNECT BY und verweisen Sie in einer nachfolgenden Abfrage auf die CTE, um ORDER BY für die Sortierung von Geschwisterzeilen (Zeilen auf derselben Ebene) anzuwenden.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0005

Synonyme werden in Snowflake nicht unterstützt, aber Verweise auf dieses Synonym wurden durch den ursprünglichen Objektnamen geändert.

Beschreibung

Synonyme werden in Snowflake nicht unterstützt. Die Synonyme werden durch den ursprünglichen Namen ersetzt.

Beispielcode

Eingabecode:
 CREATE TABLE TABLE1
(
    COLUMN1 NUMBER
);

CREATE OR REPLACE SYNONYM B.TABLE1_SYNONYM FOR TABLE1;
SELECT * FROM B.TABLE1_SYNONYM WHERE B.TABLE1_SYNONYM.COLUMN1 = 20;
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

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0006

Einschränkungsstatus aus Nicht-Null-Inline-Einschränkung entfernt.

Beschreibung

Diese Warnung tritt auf, wenn die Nicht-Null-Spalteneinschränkung einen der folgenden Oracle-Einschränkungsstatus als Teil der Inline-Definition der Spalte enthält:

 [ RELY | NORELY | RELY DISABLE | RELY ENABLE | VALIDATE | NOVALIDATE ]
Copy

Snowflake unterstützt diese Status nicht. Daher werden sie aus der NOT NULL-Inline-Einschränkung entfernt.

Beispielcode

Eingabecode:
 CREATE TABLE Table1(
  col1 INT NOT NULL RELY
);
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

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0007

Snowflake unterstützt nicht die Versionierung von Objekten. Entwickler sollten alternative Ansätze für die Code-Versionierung in Betracht ziehen.

Beschreibung

Snowflake unterstützt die Versionierung von Objekten nicht. Der Modifikator EDITINONABLE oder NONEDITIONABLE wird im konvertierten Code entfernt und eine Warnung wird hinzugefügt.

Beispielcode

Eingabecode:
 CREATE OR REPLACE EDITIONABLE PROCEDURE FUN1 (n number)is
l_result number;
begin
    DELETE FROM employees;
end;
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

  • Der Benutzer sollte alternative Ansätze für die Code-Versionierung in Betracht ziehen.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0008

Festlegen des Quantifizierers wird nicht unterstützt

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0071.

Beschreibung

Der Quantifizierer „all“ wird in Snowflake nicht unterstützt. Der Modifikator wird aus dem Quellcode entfernt und eine Warnung wird hinzugefügt. Der resultierende Code kann sich unerwartet verhalten.

Beispielcode

Eingabecode:
 SELECT location_id  FROM locations 
MINUS ALL 
SELECT location_id  FROM departments;
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 Vorgänge INTERSECT und MINUS/EXCEPT Duplikate immer.

Best Practices

  • Prüfen Sie Alternativen in Snowflake, um die Funktionalität des „All“-Quantifizierers zu emulieren.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0009

Implizite SQL-Cursorwerte können sich unterscheiden.

Beschreibung

Bemerkung

Generieren Sie Prozeduren und Makros mit JavasScript als Zielsprache, indem Sie die folgende Option hinzufügen: -t JavaScript oder --PLTargetLanguage JavaScript

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Diese EWI wird angezeigt, wenn ein impliziter SQL-Cursorwert verwendet wird. Dies liegt daran, dass Oracle je nach Typ der Abfrage unterschiedliche Werte verwendet. Beispiel: für SELECT der Wert, der zum Einstellen von verwendet wird SQL implizite Cursorwerte sind die Anzahl der von der Abfrage zurückgegebenen Zeilen. Wenn der Abfragetyp UPDATE/CREATE/DELETE/INSERT ist, wird die Anzahl der betroffenen Zeilen als Wert verwendet; dies ist der Hauptgrund, warum diese EWI angezeigt wird.

Beispielcode

Eingabecode:
-- Additional Params: -t JavaScript
--Transformation for implicit cursor
CREATE OR REPLACE PROCEDURE SP_SAMPLE AUTHID DEFINER IS
  stmt_no  POSITIVE;
BEGIN
  IF SQL%ROWCOUNT = 0 THEN
   EXIT ;
  END IF;
  IF SQL%ISOPEN THEN
   EXIT ;
  END IF;
  IF SQL%FOUND THEN
   EXIT ;
  END IF;
  IF SQL%NOTFOUND THEN
   EXIT ;
  END IF;
END;
Generierter Code:
 -- Additional Params: -t JavaScript
--Transformation for implicit cursor
CREATE OR REPLACE PROCEDURE SP_SAMPLE ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "12/16/2024",  "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
  !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'PlInvokerRightsClause' NODE ***/!!!
  //AUTHID DEFINER
  null
  // SnowConvert AI Helpers Code section is omitted.

  let STMT_NO = new POSITIVE();
  if (SQL.ROWCOUNT /*** SSC-FDM-OR0009 - SQL IMPLICIT CURSOR VALUES MAY DIFFER ***/ == 0) {
    break;
  }
  if (SQL.ISOPEN) {
    break;
  }
  if (SQL.FOUND) {
    break;
  }
  if (SQL.NOTFOUND) {
    break;
  }
$$;
Copy

Best Practices

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0010

NUMBER-Datentyp mit geringerer Genauigkeit wurde erhöht, um an die Skalierung anzupassen.

Beschreibung

Der NUMBER-Datentyp speichert Fest- und Gleitkommazahlen. Diese Daten sind zwischen verschiedenen Betriebssystemen portierbar, auf denen die Oracle-Datenbank ausgeführt wird. Der NUMBER-Datentyp wird für die meisten Fälle empfohlen, in denen Sie numerische Daten speichern müssen. Die -Syntax lautet wie folgt: NUMBER (X, Y) wobei X die Genauigkeit und Y die Skalierung ist.

Beispiel: NUMBER(5, 3) ist eine Zahl mit 2 Ziffern vor der Dezimalzahl und 3 Ziffern nach der Dezimalzahl, genau wie die folgende:

12.345

Copy

Weitere wichtige Hinweise:

  1. Scale Y gibt die maximale Anzahl von Stellen rechts vom Dezimalpunkt an.

  2. Scale-Precision YX gibt die Mindestanzahl der Nullen an, die nach dem Dezimalpunkt vorhanden sind.

Diese Meldung wird angezeigt, wenn ein NUMBER-Datentyp hat eine geringere Genauigkeit als seine Skalierung hat. Snowflake unterstützt dieses Feature nicht und diese Meldung wird verwendet, um anzuzeigen, dass der Wert der Genauigkeit erhöht wurde, um die Äquivalenz zu erhalten.

Hinweis

Bitte bedenken Sie, dass es Fälle gibt, in denen dieses Problem entweder zusammen mit anderen bekannten Transformationen auftreten kann oder gar nicht auftritt. Zum Beispiel: In Fällen, in denen die Skalierung durch neunzehn ersetzt wird und die frühere Präzision größer als neunzehn ist, wird diese Meldung NOT angezeigt.

Beispielcode

Eingabecode:
Abfragen
 CREATE TABLE SampleNumberTable(Col1 NUMBER(4, 5));

INSERT INTO SampleNumberTable (Col1)
VALUES (0.00009);

INSERT INTO SampleNumberTable (Col1)
VALUES (0.000021);

INSERT INTO SampleNumberTable (Col1)
VALUES (0.012678912);

SELECT * FROM SampleNumberTable;
Copy
Ergebnis
Col1   |
-------+
0.00009|
0.00002|
0.01268|

Copy
Generierter Code:
Abfragen
 CREATE OR REPLACE TABLE SampleNumberTable (Col1 NUMBER(5, 5) /*** SSC-FDM-OR0010 - NUMBER DATATYPE SMALLER PRECISION WAS INCREASED TO MATCH SCALE ***/ /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;

INSERT INTO SampleNumberTable(Col1)
VALUES (0.00009);

INSERT INTO SampleNumberTable(Col1)
VALUES (0.000021);

INSERT INTO SampleNumberTable(Col1)
VALUES (0.012678912);

SELECT * FROM
SampleNumberTable;
Copy
Ergebnis
Col1   |
-------+
0.00009|
0.00002|
0.01268|

Copy

Best Practices

SSC-FDM-OR0011

Das boolesche Argument wurde entfernt, da die Option „zum Stapel hinzufügen“ nicht unterstützt wird.

Beschreibung

Diese Warnung wird angezeigt, wenn das dritte optionale Argument von RAISE_APLICATION_ERROR während der Migration entfernt wurde. Diese Funktion wird von Snowflake nicht unterstützt.

Beispielcode

Eingabecode:
 CREATE OR REPLACE FUNCTION TEST(SAMPLE_A      IN NUMBER DEFAULT NULL,
                               SAMPLE_B       IN NUMBER DEFAULT NULL)
  RETURN NUMBER
 AS
BEGIN
    raise_application_error(-20001, 'First exception message', FALSE);
  RETURN 1;
END TEST;
Copy
Generierter Code:
 !!!RESOLVE EWI!!! /*** SSC-EWI-0068 - USER DEFINED FUNCTION WAS TRANSFORMED TO SNOWFLAKE PROCEDURE ***/!!!
CREATE OR REPLACE PROCEDURE TEST (SAMPLE_A NUMBER(38, 18) DEFAULT NULL,
                               SAMPLE_B NUMBER(38, 18) DEFAULT NULL)
RETURNS NUMBER(38, 18)
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/02/2025",  "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
 DECLARE
  FIRST_EXCEPTION_MESSAGE_EXCEPTION_CODE_0 EXCEPTION (-20001, 'FIRST EXCEPTION MESSAGE');
 BEGIN
  --** SSC-FDM-OR0011 - ADD TO STACK OF ERRORS IS NOT SUPPORTED, BOOLEAN ARGUMENT FALSE WAS REMOVED. **
  RAISE FIRST_EXCEPTION_MESSAGE_EXCEPTION_CODE_0;
  RETURN 1;
 END;
$$;
Copy

Best Practices

  • Es sind keine Aktionen des Endbenutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0012

COMMIT- und ROLLBACK-Anweisungen erfordern ein entsprechendes Setup, um wie vorgesehen ausgeführt zu werden.

Beschreibung

COMMIT- und ROLLBACK-Anweisungen erfordern ein entsprechendes Setup, um in Snowflake wie vorgesehen ausgeführt zu werden. Die folgende Anweisung muss in Snowflake ausgeführt werden, um die korrekte Funktionalität dieser Anweisungen zu simulieren:

 ALTER SESSION SET AUTOCOMMIT = false;
Copy

Beispielcode

Eingabecode
 COMMIT;
ROLLBACK;
Copy
Generierter Code
 --** SSC-FDM-OR0012 - COMMIT REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
COMMIT;

--** SSC-FDM-OR0012 - ROLLBACK REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
ROLLBACK;
Copy

Best Practices

  • Führen Sie die im Abschnitt „Beschreibung“ angegebene Abfrage aus, bevor Sie mit der Ausführung Ihres Codes beginnen.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0013

Die Zyklusklausel wird in Snowflake nicht unterstützt.

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0039.

Beschreibung

Diese Nachricht wird angezeigt, wenn SnowConvert AI eine Abfrage mit einer CYCLE-Klausel findet. Diese wird in Snowflake nicht unterstützt, daher wird sie aus dem Code auskommentiert.

Diese Klausel markiert, wenn es eine Rekursion gibt.

Weitere Informationen zur Klausel-Funktion finden Sie unter documentation.

Beispielcode

CONNECT BY

Eingabecode:
 CREATE OR REPLACE FORCE NONEDITIONABLE VIEW VIEW01 AS
SELECT
      UNIQUE A.*
FROM
      TABLITA A
WHERE
      A.X = A.C CONNECT BY NOCYCLE A.C = 0 START WITH A.B = 1
HAVING
      X = 1
GROUP BY
      A.C;
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 in der Datenhierarchie Zyklen vorhanden sind, können Sie diesen [Artikel] (https://docs.snowflake.com/en/user-guide/queries-cte#cause-1-cyclic-data-hierarchy) lesen, um damit umzugehen.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0014

Datentypen des Fremdschlüssels stimmen nicht überein.

Beschreibung

Dieser Fehler tritt auf, wenn ein Fremdschlüssel-Datentyp nicht übereinstimmt.

Beispielcode

Eingabecode:
 CREATE TABLE "MyDb"."MyTable"
(
    "COL1" NUMBER,
    CONSTRAINT "PK" PRIMARY KEY ("COL1")
);

CREATE TABLE "MyDb"."MyTable1"
(   
    "COL1" NUMBER(*,0),
    CONSTRAINT "FK1" FOREIGN KEY ("COL1") REFERENCES "MyDb"."MyTable" ("COL1")
);
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

Beachten Sie Folgendes: „MyDb“.“MyTable1“.COL1 und „MyDb“.“MyTable“.COL1 sind von unterschiedlichem Typ und es wird ERROR angezeigt.

Best Practices

  • Wenn in der Datenhierarchie Zyklen vorhanden sind, können Sie diesen [Artikel] (https://docs.snowflake.com/en/user-guide/queries-cte#cause-1-cyclic-data-hierarchy) lesen, um damit umzugehen.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0015

Die von LENGTHB nach OCTET_LENGTH transformierten Ergebnisse können aufgrund des Speichermanagements von DBMS variieren.

Beschreibung

Dieses Problem tritt auf, wenn ein Aufruf der Funktion [LENGTHB] (https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/LENGTH.html#GUID-8F97F652-5AE8-4457-AFD7-7A6F25551E0C) erfolgt, die die Größe einer Spalte oder eines Literals in Bytes zurückgibt. Diese Funktion wird in die Snowflake-Funktion OCTET_LENGTH umgewandelt.

Wenn der Parameter der Funktion eine Spalte ist, ist das Ergebnis die Größe des Spaltenwertes. Diese Größe kann von Oracle zu Snowflake variieren. Der Typ der Spalte spielt eine wichtige Rolle bei dem von der Funktion zurückgegebenen Ergebnis.

Beispielcode

Eingabecode:
Abfragen
 CREATE TABLE char_table
(
	char_column1 CHAR(15)
);

INSERT INTO char_table VALUES ('Hello world');

SELECT char_column1, LENGTHB(char_column1), LENGTH('Hello world') FROM char_table;
Copy
Ergebnis
|CHAR_COLUMN1   |LENGTHB(CHAR_COLUMN1)|LENGTH('HELLOWORLD')|
|---------------|---------------------|--------------------|
|Hello world    |15                   |11                  |


Copy
Generierter Code:
Abfragen
CREATE OR REPLACE TABLE char_table
(
	char_column1 CHAR(15)
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;

INSERT INTO char_table
VALUES ('Hello world');

SELECT char_column1,
OCTET_LENGTH(char_column1) /*** SSC-FDM-OR0015 - LENGTHB TRANSFORMED TO OCTET_LENGTH RESULTS MAY VARY DUE TO MEMORY MANAGEMENT OF DBMS ***/, LENGTH('Hello world') FROM
char_table;
Ergebnis
|CHAR_COLUMN1|OCTET_LENGTH(CHAR_COLUMN1)|LENGTH('HELLO WORLD')|
|------------|--------------------------|---------------------|
|Hello world |11                        |11                   |


Copy

Best Practices

  • Überprüfen Sie manuell die verwendeten Datentypen.

  • Überprüfen Sie die Codierung der verwendeten Spalten, da OCTET_LENGTH größere Größen zurückgeben kann, wenn die Zeichenfolge Unicode-Codepunkte enthält.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0016

COMMIT- und ROLLBACK -Optionen wurden entfernt, da Snowflake sie nicht benötigt

Beschreibung

COMMIT- und ROLLBACK-Anweisungsoptionen werden entfernt, da Snowflake sie nicht mehr benötigt.

Beispielcode

Eingabecode
 COMMIT WORK FORCE '22.57.53';
ROLLBACK WORK FORCE '22.57.53';
Copy
Generierter Code
 --** SSC-FDM-OR0016 - COMMIT OPTIONS REMOVED BECAUSE SNOWFLAKE DOES NOT REQUIRE THEM **
--** SSC-FDM-OR0012 - COMMIT REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
COMMIT WORK;

--** SSC-FDM-OR0016 - ROLLBACK OPTIONS REMOVED BECAUSE SNOWFLAKE DOES NOT REQUIRE THEM **
--** SSC-FDM-OR0012 - ROLLBACK REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
ROLLBACK WORK;
Copy

Best Practices

SSC-FDM-OR0017

DBTimezone wurde entfernt, um den Standardwert des Zeitstempels zu verwenden.

Beschreibung

DBTIMEZONE-Schlüsselwort wurde aus dem Ausdruck AT TIME ZONE entfernt.

Beispielcode

Eingabecode:
 SELECT TIMESTAMP '1998-12-25 09:26:50.12' AT TIME ZONE DBTIMEZONE FROM DUAL;
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

  • Möglicherweise müssen Sie den Sitzungsparameter TIMEZONE setzen, um gleiche Ergebnisse zu erhalten.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0018

Die Merge-Anweisung funktioniert möglicherweise nicht wie erwartet

Beschreibung

Diese Warnung wird verwendet, um darauf hinzuweisen, dass die Snowflake-Merge-Anweisung möglicherweise einige Funktionsunterschiede im Vergleich zu Oracle aufweist.

Beispielcode

Eingabecode:
 MERGE INTO people_target pt 
USING people_source ps 
ON    (pt.person_id = ps.person_id) 
WHEN MATCHED THEN UPDATE 
  SET pt.first_name = ps.first_name, 
      pt.last_name = ps.last_name, 
      pt.title = ps.title 
  DELETE where pt.title  = 'Mrs.' 
WHEN NOT MATCHED THEN INSERT 
  (pt.person_id, pt.first_name, pt.last_name, pt.title) 
  VALUES (ps.person_id, ps.first_name, ps.last_name, ps.title) 
  WHERE ps.title = 'Mr';
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 Sie andere Ergebnisse erhalten als Oracle, müssen Sie Folgendes beachten:

    • Weitere Informationen zur Priorisierung der Ausführungsreihenfolge finden Sie unter Link.

      • Führen Sie die ausgelassenen DML-Anweisungen außerhalb der Merge-Anweisung aus (vorher oder nachher, je nach Bedarf).

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0019

Die Ausgabe des Fensterrahmens ist möglicherweise nicht gleichwertig

Beschreibung

Diese Warnung wird hinzugefügt, wenn sich eine ROWS-Fensterrahmeneinheit im Quellcode befindet.

ROWS verwendet physische Zeilennummern für seine Berechnungen, die sich nach der Migration auf die Zielplattform unterscheiden können. Manuelles Hinzufügen von zusätzlichen ORDER BY-Klauseln können helfen, dieses Problem zu mindern oder zu entfernen.

Bemerkung

Beachten Sie, wie in der [Oracle-Dokumentation] (https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/Analytic-Functions.html) angegeben:\ „Der von einer analytischen Funktion mit einem logischen Offset zurückgegebene Wert ist immer deterministisch.“ Der von einer Analysefunktion mit einem physischen Offset zurückgegebene Wert kann jedoch nicht deterministische Ergebnisse liefern, es sei denn, der Sortierungsausdruck führt zu einer eindeutigen Sortierung. Möglicherweise müssen Sie mehrere Spalten in order_by_clause angeben, um diese eindeutige Reihenfolge zu erreichen.

Es wird daher empfohlen, vorab zu prüfen, ob die Funktion deterministische Ergebnisse liefert, um Probleme zu vermeiden.

Beispielcode

Eingabecode:
 SELECT
SUM(C_BIRTH_DAY)
OVER (
    ORDER BY C_BIRTH_COUNTRY
    ROWS UNBOUNDED PRECEDING) AS MAX1
FROM WINDOW_TABLE;
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

  • Stellen Sie eine deterministische Reihenfolge für Zeilen sicher, um deterministische Ausgaben bei der Ausführung in Snowflake zu gewährleisten.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0020

PRAGMA EXCEPTION_INIT wird nicht unterstützt.

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0051.

Beschreibung

Diese Warnung wird hinzugefügt, wenn die PRAGMA EXCEPTION_INIT-Funktion innerhalb einer Prozedur aufgerufen wird. Name der Exception und SQL-Code der Exceptions werden in der RAISE-Funktion festgelegt. Bei der Konvertierung in Snowflake Scripting wird der SQL-Code wird der Ausnahmedeklaration hinzugefügt, jedoch können einige Codewerte in Snowflake Scripting ungültig sein.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_SAMPLE AUTHID DEFINER IS
  NEW_EXCEPTION EXCEPTION;
  PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
  NEW_EXCEPTION2 EXCEPTION;
  PRAGMA EXCEPTION_INIT ( NEW_EXCEPTION2, -20100 );
BEGIN

  IF true THEN
    RAISE NEW_EXCEPTION;
  END IF;

EXCEPTION
    WHEN NEW_EXCEPTION THEN
        --Handle Exceptions
        NULL;
END;
/
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

  • Es ist keine Aktion des Endbenutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0021

„For Loop With Float Number As Bound“ funktioniert möglicherweise nicht korrekt im Snowflake Scripting.

Beschreibung

Snowflake Scripting erlaubt nur einen INTEGER oder einen Ausdruck, der zu einem INTEGER ausgewertet wird, als Grenze für die FOR LOOP Bedingung. Gleitende Zahlen werden auf- oder abgerundet und verändern die ursprüngliche Begrenzung.

Die untere Grenze wird auf die nächste ganze Zahl gerundet. Beispiel:

3.1 -> 3, 6.7 -> 7, 4.5 -> 5

Die obere Grenze wird jedoch auf die nächste untere Ganzzahl gekürzt. Beispiel:

3.1 -> 3, 6.7 -> 6, 4.5 -> 4

Snowflake Scripting

 CREATE OR REPLACE PROCEDURE p1()
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
    DECLARE
        var1 VARCHAR DEFAULT '';
        var2 VARCHAR DEFAULT '';
        var3 VARCHAR DEFAULT '';
    BEGIN
        --Loop 1
        FOR i IN 1.2 TO 5.2 DO
            var1 := var1 || ' ' || i::VARCHAR;
        END FOR;
        
        --Loop 2
        FOR i IN 1.7 TO 5.5 DO
            var2 := var2 || ' ' || i::VARCHAR;
        END FOR;
        
        --Loop 3
        FOR i IN 1.5 TO 5.8 DO
            var3 := var3 || ' ' || i::VARCHAR;
        END FOR;
        RETURN  ' Loop1: ' || var1 ||
                ' Loop2: ' || var2 ||
                ' Loop3: ' || var3;
    END;
$$;

CALL p1();
Copy
Ergebnis
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": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/02/2025",  "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
    BEGIN
        --** SSC-FDM-OR0021 - FOR LOOP WITH FLOAT NUMBER AS LOWER OR UPPER BOUND MAY NOT BEHAVE CORRECTLY IN SNOWFLAKE SCRIPTING **
        --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
        FOR i IN 1.2 TO 5.7
                            --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
                            LOOP
                                   NULL;
END LOOP;
    END;
$$;
Copy

Best Practices

  • Schreiben Sie die FOR LOOP-Bedingung neu, sodass Ganzzahlen verwendet werden.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0022

„For Look With Multiple Conditions“ wird derzeit von Snowflake Scripting nicht unterstützt. Es wird nur die erste Bedingung verwendet

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0100.

Beschreibung

Oracle erlaubt mehrere Bedingungen in einem einzigen FOR LOOP. Snowflake Scripting erlaubt jedoch nur eine Bedingung pro FOR LOOP. Nur die erste Bedingung wird migriert und die anderen werden bei der Transformation ignoriert.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE P3
AS
BEGIN
FOR i IN REVERSE 1..3,
REVERSE i+5..i+7
LOOP
    NULL;
END LOOP; 
END;
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

  • Trennen Sie FOR LOOP in verschiedene Schleifen oder schreiben Sie die Bedingung neu.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0023

Der Ausnahmecode überschreitet die Snowflake Scripting-Beschränkung

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0099.

Beschreibung

Diese Warnung wird angezeigt, wenn ein Fehlercode bei der Deklaration einer Ausnahme die Anzahl der Snowflake Scripting-Ausnahmen überschreitet. Die Zahl muss eine ganze Zahl (Integer) zwischen -20.000 und -20.999 sein.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE procedure_exception
IS
my_exception EXCEPTION;
PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
BEGIN
    NULL; 
END;
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;
$$;

Best Practices

  • Prüfen Sie, ob der Ausnahmecode zwischen den von Snowflake Scripting zulässigen Limits liegt, falls Sie ihn nicht durch eine andere verfügbare Ausnahmenummer ändern.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0024

Spalten aus Ausdruck nicht gefunden

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0002.

Beschreibung

Dieser Fehler tritt auf, wenn die Spalten eines Auswahlausdrucks nicht aufgelöst werden konnten, normalerweise, wenn er sich entweder auf einen Typzugriff bezieht, dessen Referenz nicht aufgelöst wurde, oder auf eine Spalte mit einem benutzerdefinierten Typ, dessen Spalten nicht definiert wurden. wie z. B. ein Typ ohne Text oder ein Objekttyp ohne Spalten.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE record_unknown_table_proc
AS
    unknownTable_variable_rowtype unknownTable%ROWTYPE;
BEGIN
    INSERT INTO MyTable values unknownTable_variable_rowtype;
END;
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 Typdefinition, auf die verwiesen wurde, Spalten enthält.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0025

„Not Null“-Einschränkung wird in Snowflake-Prozeduren nicht unterstützt

Beschreibung

Die Oracle-Variablendeklaration mit der Einschränkung NOT NULL wird in Variablendeklarationen innerhalb von Prozeduren in Snowflake nicht unterstützt.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE PROC04
IS
 var3 FLOAT NOT NULL := 100;
BEGIN
NULL;
END;
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

Best Practices

  • Es ist keine Aktion des Endbenutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0026

Typ wird bei Umwandlungsoperationen nicht unterstützt.

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0045.

Beschreibung

Dieser Fehler tritt auf, wenn ein Typ in einer Umwandlungsoperation nicht unterstützt wird.

Beispiel

Eingabecode:
 select cast(' $123.45' as number, 'L999.99') from dual;
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 Formatparameter wird nicht unterstützt.

Best Practices

  • Die Umwandlung wird in eine benutzerdefinierte Funktion konvertiert (UDF/Stub), sodass Sie es ändern können, um das Verhalten der Umwandlungsfunktion zu emulieren.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0027

DEFAULT ON CONVERSION ERROR wird nicht unterstützt.

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0029.

Beschreibung

Standard bei Konvertierungsfehlern, die in Snowflake nicht unterstützt werden

Beispielcode

Eingabecode:
 SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
Copy
Generierter Code:
 SELECT
--** SSC-FDM-OR0027 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE IN SNOWFLAKE **
TO_NUMBER('2,00') "Value" FROM DUAL;
Copy

Best Practices

  • Sie können UDF erstellen, um das Verhalten des DEFAULT-Werts ON CONVERSION ERROR zu emulieren.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0028

SYS_CONTEXT-Parameter wird nicht unterstützt.

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0031.

Beschreibung

Dieser Fehler tritt auf, wenn ein SYS_CONTEXT-Funktionsparameter nicht unterstützt wird.

Beispielcode

Eingabecode:
 SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Copy
Generierter Code:
 SELECT
--** SSC-FDM-OR0028 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE **
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Copy

Best Practices

  • Die Funktion wird in eine benutzerdefinierte Funktion(Stub) umgewandelt, sodass Sie sie anpassen können, um das Verhalten des SYS_-Parameters zu emulieren.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0029

Diese ALTER SESSION-Konfiguration wird in Snowflake nicht unterstützt.

Beschreibung

Eine Klausel oder Konfiguration der ALTER SESSION-Anweisung wird derzeit nicht unterstützt.

Beispielcode

Eingabecode:
 ALTER SESSION SET SQL_TRACE TRUE;
Copy
Generierter Code:
 ----** SSC-FDM-OR0029 - THIS ALTER SESSION CONFIGURATION IS NOT SUPPORTED IN SNOWFLAKE **
--ALTER SESSION SET SQL_TRACE TRUE
                                ;
Copy

Best Practices

SSC-FDM-OR0030

ROWID-Pseudospalte wird in Snowflake nicht unterstützt

Beschreibung

Wenn ROWID als Pseudospalte in einer Abfrage verwendet wird, wird sie zu null transformiert, um Laufzeitfehler zu vermeiden, und die EWI wird hinzugefügt. Es gibt immer noch keine Transformation, um die Funktionalität zu emulieren.

Beispielcode

Oracle-Eingabecode:
 SELECT ROWID FROM T1;
Copy
Generierter Code:
 SELECT
--** SSC-FDM-OR0030 - ROWID PSEUDOCOLUMN IS NOT SUPPORTED IN SNOWFLAKE, IT WAS CONVERTED TO NULL TO AVOID RUNTIME ERRORS **
'' AS ROWID
FROM
T1;
Copy

Best Practices

  • Es ist keine Aktion des Endbenutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0031

Die Fehlerprotokollierungsklausel in DML-Anweisungen wird von Snowflake nicht unterstützt

Beschreibung

Dieser Fehler weist darauf hin, dass die error_logging-Klausel in Oracles DML-Anweisungen von Snowflakes DML-Anweisungen nicht unterstützt wird.

Beispielcode

Eingabecode:
 MERGE INTO people_target pt 
USING people_source ps ON (pt.person_id = ps.person_id) 
WHEN MATCHED THEN UPDATE 
  SET pt.first_name = ps.first_name, 
      pt.last_name = ps.last_name, 
      pt.title = ps.title
LOG ERRORS;
Copy
Generierter Code:
 MERGE INTO people_target pt
USING people_source ps ON (pt.person_id = ps.person_id)
  WHEN MATCHED THEN
    UPDATE
    SET pt.first_name = ps.first_name,
        pt.last_name = ps.last_name,
        pt.title = ps.title
--  --** SSC-FDM-OR0031 - THE ERROR LOGGING CLAUSE IN DML STATEMENTS IS NOT SUPPORTED BY SNOWFLAKE **
--LOG ERRORS
          ;
Copy

Best Practices

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0032

StandardHash-Funktion mit einem Nicht-String-Eingabeparameter erzeugt in Snowflake ein anderes Ergebnis.

Beschreibung

Diese Warnung wird verwendet, wenn die STANDARD_HASH-Funktion in Oracle mit einem Nicht-String-Eingabeparameter in Snowflake ein anderes Ergebnis erzeugt.

Beispielcode

Eingabecode:
Abfrage
 SELECT STANDARD_HASH(1+1) FROM DUAL;
Copy
Ergebnis
 STANDARD_HASH(1+1)                               |
--------------------------------------------------+
 E39323970701D93598FC1D357F4BF04578CE3242         |

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

Best Practices

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0033

DBMS_RANDOM.VALUE Die Genauigkeit des integrierten Pakets ist in Snowflake geringer

Beschreibung

Diese Meldung wird angezeigt, wenn SnowConvert AI einen DBMS_RANDOM.VALUE migriert. Oracle-Builtin-Paketfunktionn. Diese Warnung weist darauf hin, dass die UDF zur Emulation der Funktionalität hinzugefügt wurde und eine geringere Präzision besitzt als die ursprüngliche Funktion.

Beispielcode

Eingabecode:

 CREATE OR REPLACE PROCEDURE built_in_package_proc
IS
var1 NUMBER;
BEGIN
    SELECT DBMS_RANDOM.VALUE() INTO var1 FROM DUAL;

    SELECT DBMS_RANDOM.VALUE(2,10) INTO var1 FROM DUAL; 
END;
Copy
Generierter Code:
 CREATE OR REPLACE PROCEDURE built_in_package_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
    DECLARE
        var1 NUMBER(38, 18);
    BEGIN
        SELECT
            --** SSC-FDM-OR0033 - DBMS_RANDOM.VALUE DIGITS OF PRECISION ARE LOWER IN SNOWFLAKE **
            DBMS_RANDOM.VALUE_UDF() INTO
            :var1
        FROM DUAL;

        SELECT
            --** SSC-FDM-OR0033 - DBMS_RANDOM.VALUE DIGITS OF PRECISION ARE LOWER IN SNOWFLAKE **
            DBMS_RANDOM.VALUE_UDF(2,10) INTO
            :var1
        FROM DUAL;
    END;
$$;
Copy

Best Practices

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0034

Sequenzstartwert mit ‚LIMIT VALUE‘ wird von Snowflake nicht unterstützt.

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0001.

Beschreibung

Dieser Fehler tritt auf, wenn die START WITH-Anweisung LIMIT VALUE ist.

In Oracle wird diese Klausel nur in ALTER TABLE verwendet.

  • START WITH LIMIT VALUE ist spezifisch für identity_options und kann nur mit ALTER TABLE MODIFY verwendet werden. Wenn Sie START WITH LIMIT VALUE angeben, sperrt die Oracle Datenbank die Tabelle und findet den maximalen Wert der Identitätsspalte in der Tabelle (für zunehmende Sequenzen) oder den minimalen Wert der Identitätsspalte (für abnehmende Sequenzen) und weist den Wert als Höchstwert des Sequenzgenerators zu. Der nächste vom Sequenzgenerator zurückgegebene Wert entspricht dem High-Water-Mark + INCREMENT BY Integer bei aufsteigenden Sequenzen bzw. dem High-Water-Mark -INCREMENT BY Integer bei absteigenden Sequenzen.

ALTER TABLE ORACLE

Beispielcode

Eingabecode:
 CREATE SEQUENCE SEQUENCE1
  START WITH LIMIT VALUE;
Copy
Generierter Code:
 CREATE OR REPLACE SEQUENCE SEQUENCE1
  --** SSC-FDM-OR0034 - SEQUENCE START VALUE WITH 'LIMIT VALUE' IS NOT SUPPORTED BY SNOWFLAKE. **
  START WITH LIMIT VALUE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}';
Copy

Best Practices

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0035

DBMS_OUTPUT.PUTLINE UDF-Implementierung überprüfen

Beschreibung

Diese Meldung wird angezeigt, wenn SnowConvert AI eine DBMS_OUTPUT.PUT_LINE migriert. In Oracle integrierte Paketfunktion#x6E;. Diese Warnung weist Sie darauf hin, dass Sie die hinzugefügte UD überprüfen sollten.F.

Diese EWI weist den Benutzer darauf hin, die DBMS_OUTPUT.PUT_LINE_UDF-Implementierung zu überprüfen, in der die folgenden Informationen zu finden sind:

Warnung

Die Leistung kann durch Verwendung dieser UDF beeinträchtigt werden. Wenn Sie mit der Protokollierung von Informationen beginnen möchten, sollten Sie die Implementierung auskommentieren. Beachten Sie, dass hierbei eine temporäre Tabelle verwendet wird. Wenn Sie möchten, dass die Daten nach dem Ende einer Sitzung erhalten bleiben, entfernen Sie bitte TEMPORARY aus der CREATE TABLE.

Sobald die Aufrufe von DBMS_OUTPUT.PUT_LINE_UDF erfolgt sind, verwenden Sie bitte die folgende Abfrage, um alle Logs auszulesen: SELECT * FROM DBMS_OUTPUT.DBMS_OUTPUT_LOG.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE builtin_package_call
IS
BEGIN
	DBMS_OUTPUT.PUT_LINE(1);
	DBMS_OUTPUT.PUT_LINE("Test");
END;
Copy
Generierter Code:
 CREATE OR REPLACE PROCEDURE builtin_package_call ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
	BEGIN
		--** SSC-FDM-OR0035 - CHECK UDF IMPLEMENTATION FOR DBMS_OUTPUT.PUT_LINE_UDF. **
		CALL DBMS_OUTPUT.PUT_LINE_UDF(1);
		--** SSC-FDM-OR0035 - CHECK UDF IMPLEMENTATION FOR DBMS_OUTPUT.PUT_LINE_UDF. **
		CALL DBMS_OUTPUT.PUT_LINE_UDF("Test");
	END;
$$;
Copy

Best Practices

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0036

Unnötige integrierte Paketparameter

Beschreibung

Diese Meldung wird angezeigt, wenn SnowConvert AI eine Oracle-Builtin-Paketprozedur oder -funktion migriert und dabei einige der Argumente aus dem Aufruf entfernt werden.

Einige der ursprünglichen Parameter haben möglicherweise keine Entsprechung in Snowflake oder werden in der transformierten Version nicht benötigt. Diese Parameter werden aus dem erzeugten Code entfernt, jedoch in der EWI-Nachricht beibehalten, sodass der Benutzer sie weiterhin nachverfolgen kann.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE built_in_package_proc
IS
w_file UTL_FILE.FILE_TYPE;
BEGIN
    w_file:= UTL_FILE.FOPEN('MY_DIR','test.txt','W',32760);
    UTL_FILE.PUT_LINE(w_file,'New line');    
END;
Copy
Generierter Code:
 CREATE OR REPLACE PROCEDURE built_in_package_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
    DECLARE
        w_file OBJECT /*** SSC-FDM-0015 - REFERENCED CUSTOM TYPE 'UTL_FILE.FILE_TYPE' IN QUERY NOT FOUND, USAGES MAY BE AFFECTED ***/ := OBJECT_CONSTRUCT();
    BEGIN
        --** SSC-FDM-OR0036 - PARAMETERS: 'LOCATION, MAX_LINESIZE_UDF' UNNECESSARY IN THE IMPLEMENTATION. **
        CALL UTL_FILE.FOPEN_UDF('test.txt', 'W');
        SELECT
            *
        INTO
            w_file
        FROM
            TABLE(RESULT_SCAN(LAST_QUERY_ID()));
        --** SSC-FDM-OR0036 - PARAMETERS: 'AUTOFLUSH_UDF' UNNECESSARY IN THE IMPLEMENTATION. **
        CALL UTL_FILE.PUT_LINE_UDF(:w_file, 'New line');
    END;
$$;
Copy

Best Practices

SSC-FDM-OR0037

Die verwendete Syntax in der „Select“-Anweisung wird in Snowflake nicht unterstützt.

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0004.

Bemerkung

Einige Teile des Ausgabecodes werden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Diese Warnung tritt auf, wenn eine Klausel in einer Auswahl von Snowflake nicht unterstützt wird. Folgende Klauseln werden nicht unterstützt:

  • CONTAINERS

  • SUBQUERY-RESTRICTION

  • HIERARCHIES

  • EXTERNAL-MODIFY

  • DBLINK

  • SHARDS

  • PARTITION

  • SUBPARTITION

  • HIERARCHICAL

Beispielcode

Eingabecode:
 SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
Copy
Generierter Code:
 --** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "TABLE1" **
SELECT * FROM
TABLE1
--       --** SSC-FDM-OR0037 - THE 'OPTIONAL MODIFIED EXTERNAL' SYNTAX IN SELECT IS NOT SUPPORTED IN SNOWFLAKE **
--       EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED)
                                                                   ;
Copy

Best Practices

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0038

Das boolesche Cursorattribut wird nicht unterstützt.

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0128.

Beschreibung

Diese Meldung weist darauf hin, dass ein boolesches Cursorattribut in SnowScript nicht unterstützt wird oder dass es keine Transformation gibt, die seine Funktionalität in SnowScript emuliert. Die folgende Tabelle zeigt die booleschen Cursorattribute, die emuliert werden können:

Boolesches cursor-Attribut

Status

%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
Generierter Code:
 --** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "table1" **
CREATE OR REPLACE PROCEDURE cursor_attributes_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
    DECLARE
        is_open_attr BOOLEAN;
        found_attr BOOLEAN;
        my_record OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
        my_cursor CURSOR
        FOR
            SELECT
                OBJECT_CONSTRUCT( *) sc_cursor_record FROM
                table1;
    BEGIN
        OPEN my_cursor;
        LOOP
            --** SSC-PRF-0003 - FETCH INSIDE A LOOP IS CONSIDERED A COMPLEX PATTERN, THIS COULD DEGRADE SNOWFLAKE PERFORMANCE. **
            FETCH my_cursor INTO
                :my_record;
            IF (my_record IS NULL) THEN
                EXIT;
            END IF;
            is_open_attr := null /*my_cursor%ISOPEN*/ /*** SSC-FDM-OR0038 - BOOLEAN CURSOR ATTRIBUTE %ISOPEN IS NOT SUPPORTED IN SNOWFLAKE ***/;
            found_attr := my_record IS NOT NULL;
        END LOOP;
        CLOSE my_cursor;
    END;
$$;
Copy

Best Practices

SSC-FDM-OR0039

Erstellungstyp wird in Snowflake nicht unterstützt

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0007.

Beschreibung

Diese Meldung wird hinzugefügt, wenn eine von Snowflake nicht unterstützte „Create Type“-Anweisung verwendet wird.

Beispielcode

Eingabecode (Oracle):
 CREATE TYPE type6 UNDER type5(COL1 INTEGER);
Copy
Generierter Code:
 ----** SSC-FDM-OR0039 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE **
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
                                           ;
Copy

Best Practices

  • Es sind keine Aktionen des Endbenutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0040

Numerische Zeichen können in Snowflake nicht geändert werden. Das Dezimaltrennzeichen in Snowflake ist das Punktzeichen.

Beschreibung

Numerische Zeichen können in Snowflake nicht geändert werden. Das Dezimaltrennzeichen in Snowflake ist das Punktzeichen. Die ALTER-Sitzungsanweisung wird kommentiert und eine Warnung hinzugefügt.

Beispielcode

Oracle:
 ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.';
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

Best Practices

  • Es sind keine Aktionen des Endbenutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0041

Integriertes Paket wird nicht unterstützt.

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0076.

Beschreibung

Die Übersetzung von integrierten Paketen wird derzeit nicht unterstützt.

Beispielcode

Eingabecode (Oracle):
 SELECT
UTL_RAW.CAST_TO_RAW('some magic here'),
DBMS_UTILITY.GET_TIME
FROM DUAL;
Copy
Generierter Code:
 SELECT
--** SSC-FDM-OR0041 - TRANSLATION FOR BUILT-IN PACKAGE 'UTL_RAW.CAST_TO_RAW' IS NOT CURRENTLY SUPPORTED. **
'' AS CAST_TO_RAW,
--** SSC-FDM-OR0041 - TRANSLATION FOR BUILT-IN PACKAGE 'DBMS_UTILITY.GET_TIME' IS NOT CURRENTLY SUPPORTED. **
'' AS GET_TIME
FROM DUAL;
Copy

Best Practices

  • Es sind keine Aktionen des Endbenutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0042

In Zeitstempel transformierter Datumstyp weist ein anderes Verhalten auf

Beschreibung

Der Datentyp „Datum“ wird je nach Markierung [–] –disableDateAsTimestamp entweder in Datum oder Zeitstempel umgewandelt, da der Datum-Typ in Snowflake ein anderes Verhalten als in Oracle aufweist.

Wichtige Unterschiede

Oracle DATE

Snowflake DATE

Funktionalität

Speichert Informationen zu Datum und Uhrzeit

Speichert nur Datumsinformationen (Jahr, Monat, Tag)

Interner Speicher

Binäre Zahl, die die Sekunden seit der Epoche angibt

Kompaktes Format, optimiert für Datumsangaben

Anwendungsfälle

Allgemeiner Speicher für Datum und Uhrzeit

Szenarien, in denen nur Datumsinformationen benötigt werden

Vorteile

Unterstützt sowohl Datum als auch Uhrzeit

Effizientere Speicherung für Datumsangaben

Einschränkungen

Datum und Uhrzeit können nicht getrennt gespeichert werden.

Speichert keine Zeitinformationen

Beispielcode

Eingabecode (Oracle):
 CREATE TABLE "PUBLIC"."TABLE1"
(
    "CREATED_DATE" DATE,
    "UPDATED_DATE" DATE
);
Copy
Generierter Code:
 CREATE OR REPLACE TABLE "PUBLIC"."TABLE1"
    (
        "CREATED_DATE" TIMESTAMP /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/,
        "UPDATED_DATE" TIMESTAMP /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
    ;
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

Best Practices

  • Es sind keine Aktionen des Endbenutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0043

BFILE/BLOB-Parameter werden als Binärwerte betrachtet. Möglicherweise ist ein Format erforderlich.

Beschreibung

Dieser Fehler tritt auf, wenn ein TO_CLOB in eine TO_VARCHAR-Funktion konvertiert wird. Möglicherweise ist ein Format für die BFILE/BLOB-Parameter erforderlich.

Beispielcode

Eingabecode:
 SELECT TO_CLOB('Lorem ipsum dolor sit amet') FROM DUAL;
Copy
Generierter Code:
 SELECT
--** SSC-FDM-OR0043 - BFILE/BLOB PARAMETERS ARE CONSIDERED BINARY, FORMAT MAY BE NEEDED. **
TO_VARCHAR('Lorem ipsum dolor sit amet')
FROM DUAL;
Copy

Best Practices

  • Prüfen Sie, ob die Ausgaben im Eingabecode und dem konvertierten Code gleichwertig sind, und fügen Sie bei Bedarf einen Formatparameter hinzu.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0044

REGEXP_LIKE_UDF-Übereinstimmungsparameter verhält sich möglicherweise nicht korrekt

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Diese Warnung erscheint, wenn die Oracle-REGEXP_LIKE-Bedingung mit dem dritten Parameter (Match-Parameter) verwendet wird. Der Grund für die Warnung ist, dass die REGEXP_LIKE_UDF, die die REGEXP_LIKE ersetzt, nicht alle vom Match-Parameter verwendeten Zeichen erkennt. Daher kann das Ergebnis der Abfrage in Snowflake möglicherweise nicht dem in Oracle entsprechen.

Beispielcode

Oracle-Eingabecode:
 SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i')
ORDER BY last_name;
Copy
Generierter Code:
 SELECT last_name
FROM
hr.employees
WHERE
--** SSC-FDM-OR0044 - REGEXP_LIKE_UDF MATCH PARAMETER MAY HAVE SOME FUNCTIONAL DIFFERENCES COMPARED TO ORACLE **
PUBLIC.REGEXP_LIKE_UDF(last_name, '([aeiou])\\1', 'i')
ORDER BY last_name;
Copy
  • Wenn die REGEXP_LIKE-Bedingung eines der Zeichen enthält, die von der benutzerdefinierten Funktion nicht unterstützt werden, besteht eine mögliche Lösung darin, den regulären Ausdruck zu ändern, um das Verhalten des fehlenden Zeichens im Übereinstimmungsparameter zu simulieren. Weitere Informationen zum nicht unterstützten Zeichen erhalten Sie unter REGEXP_LIKE_UDF documentation.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0045

Partitionsklauseln werden von Snowflake verarbeitet

Bemerkung

Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-OR0010.

Beschreibung

Diese Warnung erscheint, wenn die PARTITION- und SUBPARTITION-Klauseln innerhalb einer Abfrage erscheinen. Snowflake verarbeitet Partitionen automatisch

Beispielcode

Eingabecode:
 SELECT * FROM TABLITA PARTITION(col1);
Copy
Generierter Code:
 SELECT * FROM
TABLITA
--        --** SSC-FDM-OR0045 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE **
--        PARTITION(col1)
                       ;
Copy

Best Practices

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0046

Die Einschränkung für Unterabfragen ist in Snowflake nicht möglich

Bemerkung

Einige Teile des Ausgabecodes werden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Diese Warnung tritt auf, wenn in einer SELECT-Anweisung eine Subquery-Restriction erscheint.

Beispielcode

Eingabecode:
 SELECT * FROM LATERAL(SELECT * FROM TABLITA WITH READ ONLY CONSTRAINT T);
Copy
Generierter Code:
 SELECT * FROM LATERAL(SELECT * FROM
TABLITA
--        --** SSC-FDM-OR0046 - THE SUBQUERY RESTRICTION IS NOT POSSIBLE IN SNOWFLAKE **
--        WITH READ ONLY CONSTRAINT T
                                   );
Copy

Best Practices

  • Es sind keine weiteren Aktionen des Benutzers erforderlich.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0047

Es kann erforderlich sein, ein TimeStampOutput-Format festzulegen.

Beschreibung

TIMESTAMP_OUTPUT_FORMAT-Sitzungsparameter muss möglicherweise auf ‚DD-MON-YY HH24.MI.SS.FF AM TZH:TZM‘ festgesetzt werden, um eine Zeitstempelausgabe-Äquivalenz zu erhalten.

Beispielcode

Eingabecode:
 SELECT SYSTIMESTAMP FROM DUAL;
Copy
Beispiel für Standard-TIMESTAMP-Ausgabe in Oracle

Ausgabe

13-JAN-21 04.18.37.288656 PM +00:00

Generierter Code:
 SELECT
CURRENT_TIMESTAMP() /*** SSC-FDM-OR0047 - YOU MAY NEED TO SET TIMESTAMP OUTPUT FORMAT ('DD-MON-YY HH24.MI.SS.FF AM TZH:TZM') ***/
FROM DUAL;
Copy
Beispiel für Standard-TIMESTAMP-Ausgabe in Snowflake

Ausgabe

2021-01-13 08:18:19.720 -080

Best Practices

  • Um das Format für die Zeitstempelausgabe in Snowflake zu ändern, verwenden Sie die folgende Abfrage:

    ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'DD-MON-YY HH24.MI.SS.FF AM TZH:TZM';
    
  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0049

LAG-Funktion kann fehlschlagen, wenn sich der Standardwerttyp vom Ausdruckstyp unterscheidet.

Beschreibung

In Oracle konvertiert die LAG-Funktion automatisch den Datentyp des Standardwerts, sodass er mit dem Typ des Ausdrucks übereinstimmt. Snowflake führt diese implizite Konvertierung jedoch nicht durch. Daher wird eine Warnung ausgegeben, die darauf hinweist, dass die LAG-Funktion fehlschlagen kann, wenn die Datentypen nicht kompatibel sind.

Beispielcode

Eingabecode:
 SELECT 
    LAG(salary, 2, '0') OVER (ORDER BY salary) AS salary_two_steps_back
FROM 
    employees;
Copy
Generierter Code:
 SELECT
    --** SSC-FDM-OR0049 - LAG FUNCTION MIGHT FAIL IF DEFAULT VALUE TYPE DIFFERS FROM THE EXPRESSION TYPE. **
    LAG(salary, 2, '0')
    OVER (ORDER BY salary) AS salary_two_steps_back
FROM
    employees;
Copy

Best Practices

  • Überprüfen Sie, ob der Datentyp des Standardwerts mit dem Datentyp des Ausdrucks in der LAG-Funktion übereinstimmt. Wenn sie unterschiedlich sind, wandeln Sie den Standardwert explizit in den Datentyp des Ausdrucks um.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.

SSC-FDM-OR0050

Ausnahmen mit NOCOPY-Parameter können zu Dateninkonsistenzen führen.

Beschreibung

In Oracle-PL/SQL wird das NOCOPY-Schlüsselwort als Optimierungshinweis für OUT- und IN OUT-Prozedurparameter verwendet. Standardmäßig übergibt Oracle diese Parameter als Wert, erstellt während des Aufrufs eine teure Kopie der Daten und kopiert diese nach Abschluss wieder zurück. Dies kann bei großen Datenstrukturen einen erheblichen Leistungsaufwand verursachen.

NOCOPY weist Oracle an, stattdessen per Referenz zu übergeben, sodass die Prozedur die ursprünglichen Daten direkt ändern kann. Dies reduziert den Kopieraufwand und verbessert die Leistung. Änderungen sind jedoch sofort wirksam und werden nicht implizit rückgängig gemacht, wenn innerhalb der Prozedur eine unberücksichtigte Ausnahme auftritt.

Deshalb entfernen wir die NOCOPY-Parameteroption und fügen diese FDM hinzu. Dies liegt daran, dass die Ausführung der Prozedur beim Auftreten einer Ausnahme beendet wird und dadurch die RETURN-Anweisung nicht mehr erreicht wird. Infolgedessen behält die Variable im Declare-Block des Aufrufers ihre Anfangswerte bei, da die Prozedur keinen neuen Wert zur Zuweisung erfolgreich zurückliefert.

Beispielcode

Eingabecode:
CREATE OR REPLACE PROCEDURE calculate_division_with_nocopy (
    p_numerator IN NUMBER,
    p_denominator IN NUMBER,
    p_result OUT NOCOPY NUMBER
)
IS
    PROCEDURE calculate_division(result OUT NOCOPY NUMBER)
    AS
    BEGIN
    result := 20;
    result := p_numerator / p_denominator;
    END calculate_division;
BEGIN
    calculate_division(p_result);
        EXCEPTION
        WHEN OTHERS THEN
            p_result := p_result;
END calculate_division_with_nocopy;
Copy
Generierter Code:
CREATE OR REPLACE PROCEDURE calculate_division_with_nocopy (p_numerator NUMBER(38, 18), p_denominator NUMBER(38, 18), p_result OUT NUMBER(38, 18)
)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/23/2025",  "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
    DECLARE
        calculate_division PROCEDURE(result
        --** SSC-FDM-OR0050 - EXCEPTIONS WITH NOCOPY PARAMETERS MAY LEAD TO DATA INCONSISTENCY. **
        NUMBER(38, 18))
        RETURNS NUMBER
        AS
            BEGIN
                result := 20;
                result := :p_numerator / :p_denominator;
                RETURN result;
            END;
        call_results NUMBER;
    BEGIN
        call_results := (
            CALL
            calculate_division(:p_result)
        );
        p_result := :call_results;
        EXCEPTION
        WHEN OTHER THEN
            p_result := :p_result;
        END;
$$;
Copy

Best Practices