SnowConvert AI – Oracle-Probleme

SSC-EWI-OR0001

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

Beschreibung

Dieser Fehler tritt auf, wenn der START WITH-Anweisungswert 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
  !!!RESOLVE EWI!!! /*** SSC-EWI-OR0001 - 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-EWI-OR0002

Spalten aus Ausdruck nicht gefunden

Bemerkung

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

Schweregrad

Hoch

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 !!!RESOLVE EWI!!! /*** SSC-EWI-OR0002 - 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-EWI-OR0004

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

Bemerkung

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

Schweregrad

Hoch

Beschreibung

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

  • CONTAINERS

  • HIERARCHIES

  • EXTERNAL-MODIFY

  • SHARDS

Beispielcode

Eingabecode:
 SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
Copy
Generierter Code:
 SELECT * FROM
TABLE1
       !!!RESOLVE EWI!!! /*** SSC-EWI-OR0004 - 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-EWI-OR0005

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

Bemerkung

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

Schweregrad

Niedrig

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
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0005 - 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-EWI-OR0006

Es kann erforderlich sein, ein TimeStampOutput-Format festzulegen.

Bemerkung

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

Schweregrad

Niedrig

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 die TIMESTAMP-Standardausgabe in Oracle

Ausgabe

13-JAN-21 04.18.37.288656 PM +00:00

Generierter Code:
 SELECT
CURRENT_TIMESTAMP() !!!RESOLVE EWI!!! /*** SSC-EWI-OR0006 - YOU MAY NEED TO SET TIMESTAMP OUTPUT FORMAT ('DD-MON-YY HH24.MI.SS.FF AM TZH:TZM') ***/!!!
FROM DUAL;
Copy
Beispiel für die TIMESTAMP-Standardausgabe 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-EWI-OR0007

Erstellungstyp wird in Snowflake nicht unterstützt

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:
 --!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - 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-EWI-OR0008

Unbekanntes Format, kann unerwartetes Verhalten aufweisen.

Schweregrad

Niedrig

Beschreibung

Dieser Fehler wird für unbekannte Datumsformate hinzugefügt, die möglicherweise ein unerwartetes Verhalten aufweisen.

Beispielcode

Eingabecode:
 SELECT TO_CHAR(DATE '1998-12-25','iw-iyyy') FROM DUAL;
Copy
Generierter Code:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0008 - UNKNOWN FORMAT, MAY HAVE UNEXPECTED BEHAVIOR ***/!!!
 TO_CHAR(DATE '1998-12-25','iw-iyyy'') FROM DUAL;
Copy

Bemerkung

Beachten Sie, dass „iw-iyyy“ kein unterstütztes Format ist.

Best Practices

SSC-EWI-OR0009

JSON_TABLE wird nicht unterstützt.

Schweregrad

Hoch

Beschreibung

JSON_TABLE-Funktion wird aktuell nicht unterstützt.

Beispielcode

Eingabecode:
 SELECT jt.phones
FROM j_purchaseorder,
JSON_TABLE(po_document, '$.ShippingInstructions'
COLUMNS
(phones VARCHAR2(100) FORMAT JSON PATH '$.Phone')) AS jt;
Copy
Generierter Code:
 SELECT jt.phones
FROM
j_purchaseorder,
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0009 - JSON_TABLE IS NOT SUPPORTED ***/!!!
JSON_TABLE(po_document, '$.ShippingInstructions'
COLUMNS
(phones VARCHAR(100) FORMAT JSON PATH '$.Phone')) AS jt;
Copy

Best Practices

  • Sie können die FLATTEN-Funktion in Snowflake nutzen, um die Funktion JSON_TABLE zu emulieren.

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

SSC-EWI-OR0010

Partitionsklauseln werden von Snowflake verarbeitet Eine manuelle Korrektur ist erforderlich.

Bemerkung

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

Schweregrad

Kritisch

Beschreibung

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

Beispielcode

Eingabecode:
 SELECT * FROM table1 PARTITION(col1);
Copy
Generierter Code:
 SELECT * FROM
table1
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0010 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE. IT REQUIRES MANUAL FIX ***/!!!
        PARTITION(col1);
Copy

Best Practices

  • Eine manuelle Änderung ist erforderlich, um die entsprechende Funktion in Snowflake zu erhalten. Eine WHERE-Bedingung wird benötigt, um die Zeilen für die spezifische Partition zu filtern. Durch diese Problemumgehung wird jedoch die Leistung beeinträchtigt.

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

SSC-EWI-OR0011

Der Formatparameter wird nicht unterstützt.

Schweregrad

Medium

Beschreibung

Der Formatparameter wird von Snowflake derzeit in bestimmten Fällen nicht für Umwandlungsfunktionen unterstützt. Beispiel: Wenn wir „MONTH“ oder „DAY“ im DATE- oder TIMESTAMP-Format verwenden.

"MONTH/DD/YYYY" or "MM/DAY/YY" ...

Copy

Ein weiteres Szenario tritt auf, wenn Sie mit der CAST-Funktion arbeitest und NUMBER verwendest. Derzeit benötigt SnowFlake vier Argumente, um den Dezimalteil anzuzeigen. Im erzeugten Code werden jedoch noch nicht alle erforderlichen Argumente für SnowFlake bereitgestellt. Sie müssen daher die fehlenden Argumente für TO_NUMBER selbst ergänzen.

Beispielcode

Eingabecode:
 SELECT CAST('12.48' AS NUMBER, '99.99') FROM DUAL;
Copy
Generierter Code:
 SELECT
TO_NUMBER('12.48', '99.99', 38, 2)
FROM DUAL;
Copy
Eingabecode:
 SELECT CAST('FEBRUARY/18/24' as DATE, 'MONTH/DD/YY') FROM DUAL; 
SELECT CAST('FEB/MON/24' as DATE, 'MON/DAY/YY') FROM DUAL;
Copy
Generierter Code:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0011 - THE FORMAT PARAMETER 'MONTH/DD/YY' IS NOT SUPPORTED ***/!!!
TO_TIMESTAMP ('FEBRUARY/18/24' , 'MONTH/DD/YY')
FROM DUAL;

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0011 - THE FORMAT PARAMETER 'MON/DAY/YY' IS NOT SUPPORTED ***/!!!
TO_TIMESTAMP ('FEB/MON/24' , 'MON/DAY/YY')
FROM DUAL;
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-EWI-OR0013

NLS-Parameter wird nicht unterstützt.

Schweregrad

Medium

Beschreibung

NLS-Parameter wird derzeit für die folgenden Funktionen nicht unterstützt:

  • TOCHAR

  • TODATE

  • TONUMBER

  • TOTIMESTAMP

  • CAST

Beispielcode

Eingabecode:
 SELECT TO_NUMBER('-AusDollars100','9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''') "Amount" FROM DUAL;
Copy
Generierter Code:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0013 - NLS PARAMETER ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''' NOT SUPPORTED ***/!!!
TO_NUMBER('-AusDollars100', '9G999D99') "Amount" FROM DUAL;
Copy

SSC-EWI-OR0014

NLSSORT nicht unterstützt:

Bemerkung

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

Schweregrad

Medium

Beschreibung

NLSSORT-Funktion wird derzeit im Textteil (Body) von „Select“ nicht unterstützt.

Beispielcode

Eingabecode:
 SELECT NLSSORT(name, 'NLS_SORT = ENGLISH') FROM products;
Copy
Generierter Code:
 // SnowConvert AI Helpers Code section is omitted.
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0014 - FUNCTION NLSSORT IS NOT SUPPORTED ***/!!!
 NLSSORT(name, 'NLS_SORT = ENGLISH') FROM
 products;
Copy

Best Practices

  • NLSSORT wird in eine benutzerdefinierte Funktion konvertiert (UDF/Stub), sodass Sie es ändern können, um die Funktionalität zu emulieren.

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

SSC-EWI-OR0016

XML wird nicht unterstützt.

Schweregrad

Medium

Beschreibung

Die folgenden XML-Funktionen werden nicht unterstützt:

  • EXTRACT

  • EXTRACTVALUE

  • XMLSEQUENCE

  • XMLTYPE

Beispielcode

Eingabecode:
 select * from table(XMLSequence(XMLType('
<Product ProductCode="200">
 <BrandName>Notebook</BrandName>
 <ProductList>
  <Item ItemNo="200A"><Price>900</Price></Item>
  <Item ItemNo="200B"><Price>700</Price></Item>
  <Item ItemNo="200C"><Price>650</Price></Item>
  <Item ItemNo="200D"><<Price>750</Price></Item>
</ProductList>
</Product>')));
Copy
Generierter Code:
 select * from table(
                    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0016 - FUNCTION RELATED WITH XML NOT SUPPORTED ***/!!!
XMLSequence(
            !!!RESOLVE EWI!!! /*** SSC-EWI-OR0016 - FUNCTION RELATED WITH XML NOT SUPPORTED ***/!!!XMLType('
<Product ProductCode="200">
 <BrandName>Notebook</BrandName>
 <ProductList>
  <Item ItemNo="200A"><Price>900</Price></Item>
  <Item ItemNo="200B"><Price>700</Price></Item>
  <Item ItemNo="200C"><Price>650</Price></Item>
  <Item ItemNo="200D"><<Price>750</Price></Item>
</ProductList>
</Product>')));
Copy

Best Practices

SSC-EWI-OR0020

Negative Werte für Funktion werden nicht unterstützt.

Schweregrad

Medium

Beschreibung

Snowflake unterstützt keine negativen Werte für die Funktion, daher führt dies bei der Ausführung zu einem abweichenden Verhalten.

Beispielcode

Eingabecode:
 SELECT INSTR('CORPORATE FLOOR','OR', -3, 2) FROM DUAL;
Copy
Generierter Code:
 SELECT
REGEXP_INSTR('CORPORATE FLOOR','OR', -3, 2) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0020 - NEGATIVE VALUES NOT SUPPORTED FOR FUNCTION ***/!!! FROM DUAL;
Copy

Best Practices

  • Erstellen Sie eine benutzerdefinierte Funktion, die den negativen Parameter verarbeiten kann, oder suchen Sie nach einer anderen Alternative.

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

SSC-EWI-OR0023

AGGREGATE-Funktion nicht unterstützt.

Schweregrad

Hoch

Bemerkung

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

Beschreibung

Dieser Fehler wird hinzugefügt, wenn eine Aggregatfunktion wie

  • DENSE_RANK()

  • RANK()

  • PERCENT_RANK()

  • CUME_DIST()

wird in Snowflake nicht unterstützt.

Beispielcode

Eingabecode:
 SELECT DENSE_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;

SELECT RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;

SELECT PERCENT_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;

SELECT CUME_DIST(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM employees;
Copy
Generierter Code:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - DENSE_RANK AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!!
 DENSE_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
 employees;


SELECT
 !!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - RANK AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
 employees;


SELECT
 !!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - PERCENT_RANK AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! PERCENT_RANK(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
 employees;


SELECT
 !!!RESOLVE EWI!!! /*** SSC-EWI-OR0023 - CUME_DIST AGGREGATE FUNCTION SYNTAX IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! CUME_DIST(12000) WITHIN GROUP (ORDER BY salary DESC NULLS FIRST) FROM
 employees;
Copy

Best Practices

SSC-EWI-OR0026

ROWID wird nicht unterstützt.

Bemerkung

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

Schweregrad

Medium

Beschreibung

ROWID-Anweisung wird derzeit nicht unterstützt.

Beispielcode

Oracle:
 SELECT QUERY_NAME.ROWID from TABLE1;
Copy
Snowflake Scripting:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0026 - ROWID NOT SUPPORTED ***/!!!
 QUERY_NAME.ROWID from
 TABLE1;
Copy

Best Practices

SSC-EWI-OR0029

DEFAULT ON CONVERSION ERROR wird nicht unterstützt.

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
PUBLIC.TO_NUMBER_UDF('2,00', 0) "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-EWI-OR0030

KEEP-Anweisung, die in der Aggregatfunktion verwendet wird, wird nicht unterstützt

Schweregrad

Medium

Beschreibung

Dieser Fehler weist darauf hin, dass die KEEP-Anweisung, die dazu dient anzugeben, dass nur die ersten oder letzten Werte der Aggregatfunktion zurückgegeben werden sollen, nicht unterstützt wird.

Beispielcode

Eingabecode:
 SELECT
    department_id,
    MIN(salary) KEEP (
        DENSE_RANK FIRST
        ORDER BY
            commission_pct
    ) "Worst"
FROM
    employees;
Copy
Generierter Code:
 SELECT
    department_id,
    MIN(salary)
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0030 - KEEP STATEMENT USED IN THE AGGREGATE FUNCTION IS NOT SUPPORTED ***/!!!
 KEEP (
        DENSE_RANK FIRST
        ORDER BY
            commission_pct
    ) "Worst"
FROM
 employees;
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-EWI-OR0031

SYS_CONTEXT-Parameter wird nicht unterstützt.

Schweregrad

Niedrig

Beschreibung

Dieser Fehler tritt auf, wenn ein SYS_CONTEXT-Funktionsparameter nicht unterstützt wird. Snowflake unterstützt ähnliche Kontextfunktionen. Weitere Informationen dazu finden Sie auf der Seite.

Beispielcode

Eingabecode:
 SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Copy
Generierter Code:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0031 - '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_CONTEXT-Parameters zu emulieren.

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

SSC-EWI-OR0032

Ein Parameter mit dem angegebenen Format wird nicht unterstützt.

Schweregrad

Medium

Beschreibung

Dieser Fehler tritt auf, wenn ein Parameter in einer Funktion nicht unterstützt wird.

Beispielcode

Eingabecode:
 SELECT TO_CHAR(DATE '1998-12-25', 'AM') FROM DUAL;
Copy
Generierter Code:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0032 - PARAMETER USED IN THE FUNCTION 'TO_CHAR' WITH FORMAT AM IS NOT SUPPORTED ***/!!!
 TO_CHAR(DATE '1998-12-25', 'AM') FROM DUAL;
Copy

Best Practices

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

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

SSC-EWI-OR0033

PL/SQL-Deklaration in WITH wird nicht unterstützt.

Schweregrad

Medium

Beschreibung

PL/SQL-Deklarationen in WITH-Anweisungen werden nicht unterstützt.

Beispielcode

Eingabecode:
 WITH FUNCTION get_domain ( url VARCHAR2 ) RETURN VARCHAR2 IS pos BINARY_INTEGER;
len BINARY_INTEGER;
BEGIN
pos := INSTR(url, 'www.');
len := INSTR(SUBSTR(url, pos + 4), '.') - 1;
END; SELECT aValue from aTable;
Copy
Generierter Code:
 // SnowConvert AI Helpers Code section is omitted.
WITH
     !!!RESOLVE EWI!!! /*** SSC-EWI-OR0033 - PLDECLARATION IN WITH NOT SUPPORTED ***/!!!
 FUNCTION get_domain ( url VARCHAR2 ) RETURN VARCHAR2 IS pos BINARY_INTEGER;
len BINARY_INTEGER;
BEGIN
pos := INSTR(url, 'www.');
len := INSTR(SUBSTR(url, pos + 4), '.') - 1;
END; SELECT aValue from
aTable;
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-EWI-OR0035

Die Tabellenfunktion wird nicht unterstützt, wenn sie als Sammlung von Ausdrücken verwendet wird.

Bemerkung

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

Schweregrad

Medium

Beschreibung

TABLE-Funktion wird in Snowflake nicht unterstützt, wenn sie als Sammlung von Ausdrücken verwendet wird.

Beispielcode

Eingabecode:
 SELECT 
TABLE2.COLUMN_VALUES
FROM TABLE1 i, TABLE(i.groups) TABLE2;
Copy
Generierter Code:
 // SnowConvert AI Helpers Code section is omitted.
SELECT
TABLE2.COLUMN_VALUES
FROM
TABLE1 i,
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0035 - TABLE FUNCTION IS NOT SUPPORTED WHEN IT IS USED AS A COLLECTION OF EXPRESSIONS ***/!!! TABLE(i.groups) TABLE2;
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-EWI-OR0036

Bei Problemen mit der Auflösung von Typen verhält sich die arithmetische Operation zwischen Zeichenfolge und Datum möglicherweise nicht korrekt.

Schweregrad

Niedrig

Beschreibung

Dieses Problem tritt auf, wenn sich eine arithmetische Operation zwischen zwei bestimmten Datentypen möglicherweise nicht korrekt verhält.

Beispielcode

Eingabecode:
 SELECT
    SYSDATE,
    SYSDATE + '1',
    SYSDATE + 'A'
from
    dual;
Copy
Generierter Code:
 SELECT
    CURRENT_TIMESTAMP(),
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN Date AND String ***/!!!
    CURRENT_TIMESTAMP() + '1',
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN Date AND String ***/!!!
    CURRENT_TIMESTAMP() + 'A'
from
    dual;
Copy

Bemerkung

Beachten Sie, dass sich die Operation zwischen einer Zeichenfolge und einem Datum möglicherweise nicht korrekt verhält.

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-EWI-OR0038

Suchklausel wurde aus der With-Element-Anweisung entfernt.

Schweregrad

Niedrig

Beschreibung

Die search_clause wird verwendet, um die Reihenfolge festzulegen, in der Zeilen in einer SELECT-Anweisung verarbeitet werden. Diese Funktion ermöglicht eine individuell angepasste Durchlaufreihenfolge der Daten, sodass die Ergebnisse in einer bestimmten Reihenfolge gemäß den festgelegten 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
) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0038 - 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-EWI-OR0039

Die Nocycle-Klausel wurde in Snowflake nicht unterstützt.

Bemerkung

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

Schweregrad

Niedrig

Beschreibung

Diese Nachricht wird angezeigt, wenn SnowConvert AI eine Abfrage mit einer NOCYCLE-Klausel findet, die in Snowflake nicht unterstützt wird.

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
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0039 - NOCYCLE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
CONNECT BY
      A.C = 0 START WITH A.B = 1;
Copy

Best Practices

SSC-EWI-OR0042

Modellklausel wird nicht unterstützt.

Bemerkung

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

Schweregrad

Niedrig

Beschreibung

Diese Nachricht wird angezeigt, wenn SnowConvert AI eine Abfrage mit einer MODEL-Klausel findet, die in Snowflake nicht unterstützt wird.

Beispielcode

Eingabecode:
 SELECT
   employee_id,
   salary
FROM
   employees
MODEL
DIMENSION BY (employee_id)
MEASURES (salary)
();
Copy
Generierter Code:
 SELECT
   employee_id,
   salary
FROM
   employees
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0042 - MODEL CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
MODEL
DIMENSION BY (employee_id)
MEASURES (salary)
();
Copy

Best Practices

SSC-EWI-OR0045

Cast-Typ L und FML werden nicht unterstützt.

Schweregrad

Medium

Beschreibung

Dieses Problem tritt auf, wenn versucht wird, mit dem FML- oder dem L-Format zu casten. Diese Formate sind in Snowflake nicht anwendbar, daher wird der Code auskommentiert und diese Nachricht hinzugefügt.

Beispielcode:

Eingabecode:
 SELECT CAST(' $123.45' as number, 'L999.99') FROM DUAL;
SELECT CAST('$123.45' as number, 'FML999.99') FROM DUAL;
Copy
Generierter Code:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0045 - CAST TYPE L AND FML NOT SUPPORTED ***/!!!
 CAST(' $123.45' as NUMBER(38, 18) , 'L999.99') FROM DUAL;

SELECT
 !!!RESOLVE EWI!!! /*** SSC-EWI-OR0045 - CAST TYPE L AND FML NOT SUPPORTED ***/!!! CAST('$123.45' as NUMBER(38, 18) , 'FML999.99') FROM DUAL;
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-EWI-OR0046

Alter Table-Syntax ist in Snowflake nicht anwendbar.

Bemerkung

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

Schweregrad

Medium

Beschreibung

Die verwendete Alter Table-Syntax ist in Snowflake nicht anwendbar; daher wird der Code auskommentiert und diese Nachricht hinzugefügt.

Beispielcode:

Eingabecode:
 ALTER TABLE SOMENAME DEFAULT COLLATION SOMENAME;

ALTER TABLE SOMENAME ROW ARCHIVAL;

ALTER TABLE SOMENAME MODIFY CLUSTERING;

ALTER TABLE SOMENAME DROP CLUSTERING;

ALTER TABLE SOMENAME SHRINK SPACE COMPACT CASCADE;
Copy
Generierter Code:
 !!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **
ALTER TABLE SOMENAME
DEFAULT COLLATION SOMENAME;

!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **

ALTER TABLE SOMENAME
ROW ARCHIVAL;

!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **

ALTER TABLE SOMENAME
MODIFY CLUSTERING;

!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **

ALTER TABLE SOMENAME
DROP CLUSTERING;

!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "SOMENAME" **

ALTER TABLE SOMENAME
SHRINK SPACE COMPACT CASCADE;
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-EWI-OR0047

TO_NCHAR wird in TO_VARCHAR transformiert. Möglicherweise ist dies in Snowflake nicht kompilierbar.

Schweregrad

Niedrig

Bemerkung

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

Beschreibung

Diese Warnung wird hinzugefügt, wenn die Funktion TO_NCHAR gefunden und in eine TO_VARCHAR-Funktion umgewandelt wurde.

Es gibt mehrere Fälle, in denen die Transformation einen Kompilierungsfehler verursacht oder die Ausgabe nicht dieselbe ist.

Beispielcode

Eingabecode:
 select TO_NCHAR(sysdate,'DY','nls_date_language=english') from dual
Copy
Generierter Code:
 select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0047 - TO_NCHAR TRANSFORMED TO TO_VARCHAR, IT MAY NOT BE COMPILABLE IN SNOWFLAKE ***/!!!
TO_VARCHAR(CURRENT_TIMESTAMP(),'DY','nls_date_language=english') from dual;
Copy

Das obige Beispiel führt zu einem Fehler, wenn es in Snowflake verwendet wird.

Nicht alle Fälle führen zu Fehlern.

Eingabecode:
 SELECT TO_NCHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
Copy
Generierter Code:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0047 - TO_NCHAR TRANSFORMED TO TO_VARCHAR, IT MAY NOT BE COMPILABLE IN SNOWFLAKE ***/!!!
TO_VARCHAR(CURRENT_TIMESTAMP(), 'YYYY-MM-DD') FROM dual;
Copy

Das letzte Beispiel verursacht keinen Fehler in Snowflake, und die Ausgabe ist äquivalent, wenn sie ausgeführt wird.

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-EWI-OR0049

Paketkonstanten in zustandsabhängigen Paketen werden noch nicht unterstützt.

Schweregrad

Kritisch

Bemerkung

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

Beschreibung

Diese Warnung wird hinzugefügt, wenn es ein Mitglied eines zustandsabhängigen Pakets gibt, das noch nicht unterstützt wird.

Dieses Feature ist für die Zukunft geplant.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PACKAGE MY_PACKAGE
AS
    TYPE COLLECTIONTYPEDEFINITION IS TABLE OF BULKCOLLECTTABLE%ROWTYPE;
END;
Copy
Generierter Code:
 CREATE SCHEMA IF NOT EXISTS MY_PACKAGE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;

!!!RESOLVE EWI!!! /*** SSC-EWI-OR0049 - PACKAGE TYPE DEFINITIONS in stateful package MY_PACKAGE are not supported yet ***/!!!
TYPE COLLECTIONTYPEDEFINITION IS TABLE OF BULKCOLLECTTABLE%ROWTYPE;
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-EWI-OR0050

Der Eingabeausdruck liegt außerhalb des Bereichs

Schweregrad

Medium

Beschreibung

Dieses Problem tritt auf, wenn Sie versuchen, einen Eingabewert umzuwandeln, der außerhalb des Bereichs liegt. Das bedeutet, dass die Präzisionswerte in Snowflake nicht anwendbar sind. Dann wird der Code auskommentiert und diese Nachricht wird hinzugefügt.

Beispielcode:

Eingabecode:
 SELECT CAST('123,456E+40' AS NUMBER, '999,999EEE') FROM DUAL;
SELECT CAST('12.34567891234567891234567891234567891267+' AS NUMBER, '99.999999999999999999999999999999999999S') FROM DUAL;
SELECT CAST('12.34567891234567891234567891234567891267' AS NUMBER, '99.999999999999999999999999999999999999') FROM DUAL;
select cast(' 1.0E+123' as number, '9.9EEEE') from dual;
Copy
Generierter Code:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE '123,456E+40' ***/!!!
 CAST('123,456E+40' AS NUMBER(38, 18) , '999,999EEE') FROM DUAL;

SELECT
 !!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE '12.34567891234567891234567891234567891267+' ***/!!! CAST('12.34567891234567891234567891234567891267+' AS NUMBER(38, 18) , '99.999999999999999999999999999999999999S') FROM DUAL;

SELECT
 !!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE '12.34567891234567891234567891234567891267' ***/!!! CAST('12.34567891234567891234567891234567891267' AS NUMBER(38, 18) , '99.999999999999999999999999999999999999') FROM DUAL;

select
 !!!RESOLVE EWI!!! /*** SSC-EWI-OR0050 - INPUT EXPRESSION IS OUT OF THE RANGE ' 1.0E+123' ***/!!! cast(' 1.0E+123' as NUMBER(38, 18) , '9.9EEEE') from dual;
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-EWI-OR0051

PRAGMA EXCEPTION_INIT wird nicht unterstützt.

Schweregrad

Niedrig

Beschreibung

Diese EWI 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-Skript
 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
AS
$$
  DECLARE
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0099 - EXCEPTION CODE NUMBER EXCEEDS SNOWFLAKE SCRIPTING LIMITS ***/!!!
    NEW_EXCEPTION EXCEPTION;
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED ***/!!!
    PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
    NEW_EXCEPTION2 EXCEPTION (-20100, '');
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - 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-EWI-OR0052

Die Ausnahmedeklaration wird durch die „raise“-Funktion gehandhabt.

Schweregrad

Niedrig

Bemerkung

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

Bemerkung

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

Beschreibung

Ausnahmen können sowohl in Oracle als auch in Snowflake definiert werden, aber die RAISE-Funktion ist dafür ausgelegt, die Deklaration, die Zuweisung und das Auslösen des Fehlers zu übernehmen. Aus diesem Grund wird die Ausnahmedeklaration auskommentiert und die Warnung angezeigt.

Beispielcode

Eingabecode:
 -- Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_SAMPLE AUTHID DEFINER IS
  NEW_EXCEPTION EXCEPTION;
  PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
BEGIN

  IF true THEN
    RAISE NEW_EXCEPTION;
  END IF;

EXCEPTION
    WHEN NEW_EXCEPTION THEN
        --Handle Exceptions
END;
Copy
Generierter Code:
 CREATE OR REPLACE PROCEDURE EXCEPTION_DECLARATION_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.

  try {
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0052 - EXCEPTION DECLARATION IS HANDLED BY RAISE FUNCTION ***/!!!
    /*   NEW_EXCEPTION EXCEPTION */
    ;
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED ***/!!!
    /*   PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63) */
    ;
    if (true) {
      RAISE(-63,`NEW_EXCEPTION`,`NEW_EXCEPTION`);
    }
  } catch(error) {
    switch(error.name) {
      case `NEW_EXCEPTION`: {
        break;
      }
      default: {
        throw error;
        break;
      }
    }
  }
  //Handle Exceptions
  ;
$$;
Copy

Bemerkung

Einige Teile in den Ausgabecodes werden weggelassen, um die Lesbarkeit zu erleichtern.

Best Practices

SSC-EWI-OR0053

Falsches Eingabeformat

Schweregrad

Medium

Beschreibung

Dieses Problem tritt auf, wenn Sie versuchen, ein falsches Eingabeformat umzuwandeln. Dann wird der Code auskommentiert und diese Nachricht wird hinzugefügt.

Beispielcode:

Eingabecode:
 SELECT CAST('12sdsd3,456E+40' AS NUMBER, '999,999EEE') FROM DUAL;
SELECT CAST('12345sdsd' AS NUMBER, '99999') FROM DUAL;
Copy
Generierter Code:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0053 - INCORRECT INPUT FORMAT '12sdsd3,456E+40' ***/!!!
 CAST('12sdsd3,456E+40' AS NUMBER(38, 18) , '999,999EEE') FROM DUAL;

SELECT
 !!!RESOLVE EWI!!! /*** SSC-EWI-OR0053 - INCORRECT INPUT FORMAT '12345sdsd' ***/!!! CAST('12345sdsd' AS NUMBER(38, 18) , '99999') FROM DUAL;
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-EWI-OR0057

Die Transformation von verschachtelten Prozeduren oder Funktionen wird in diesem Szenario nicht unterstützt.

Schweregrad

Kritisch

Bemerkung

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

Beschreibung

Die Übersetzung von verschachtelten Funktionen innerhalb anderer Funktionen oder Prozeduren wird nicht unterstützt. Ebenso werden Prozeduren, die innerhalb von Funktionen oder anonymen Blöcken verschachtelt sind, derzeit nicht unterstützt.

Verschachtelte Prozeduren innerhalb anderer Prozeduren oder Pakete werden jedoch unterstützt. Weitere Informationen dazu finden Sie in der Dokumentation zu verschachtelten Prozeduren.

Beispielcode

Eingabecode:
CREATE OR REPLACE function FOO1 RETURN INTEGER AS
    FUNCTION FOO2 RETURN INTEGER AS
    BEGIN
        RETURN 123;
    END;
BEGIN
    RETURN FOO2() + 456;
END;
Copy
Generierter Code:
 !!!RESOLVE EWI!!! /*** SSC-EWI-0068 - USER DEFINED FUNCTION WAS TRANSFORMED TO SNOWFLAKE PROCEDURE ***/!!!!!!RESOLVE EWI!!! /*** SSC-EWI-0046 - NESTED FUNCTION/PROCEDURE DECLARATIONS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!!
CREATE OR REPLACE PROCEDURE FOO1 ()
RETURNS INTEGER
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/14/2025",  "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
    DECLARE
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0057 - TRANSFORMATION FOR NESTED FUNCTION IS NOT SUPPORTED IN THIS SCENARIO ***/!!!
        FUNCTION FOO2 RETURN INTEGER AS
        BEGIN
            RETURN 123;
        END;
    BEGIN
        RETURN FOO2() + 456;
    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-EWI-OR0067

Mehrere Einschränkungsdefinitionen in einer einzigen Anweisung werden in Snowflake nicht unterstützt.

Schweregrad

Medium

Bemerkung

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

Beschreibung

Mehrere Einschränkungsdefinitionen in einer einzigen ALTER TABLE-Anweisung werden in Snowflake nicht unterstützt.

Beispielcode

Oracle:
 ALTER TABLE TABLE1 ADD (
  CONSTRAINT TABLE1_PK
  PRIMARY KEY
  (ID)
  ENABLE VALIDATE,
  CONSTRAINT TABLE1_FK foreign key(ID2)
  references TABLE2 (ID) ON DELETE CASCADE);
Copy
Snowflake Scripting:
 !!!RESOLVE EWI!!! /*** SSC-EWI-OR0067 - MULTIPLE CONSTRAINT DEFINITION IN A SINGLE STATEMENT IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
ALTER TABLE TABLE1
ADD (
  CONSTRAINT TABLE1_PK
  PRIMARY KEY
  (ID) ,
  CONSTRAINT TABLE1_FK foreign key(ID2)
  references TABLE2 (ID) ON DELETE CASCADE);
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-EWI-OR0068

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

Schweregrad

Medium

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 eine 64-Bit-Zweierkomplement-Ganzzahl (von -2^63 bis 2^63-1) dargestellt werden können. 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
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0068 - 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
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0068 - 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-EWI-OR0069

Die Sequence-Eigenschaft CURRVAL wird in Snowflake nicht unterstützt.

Schweregrad

Medium

Beschreibung

Die Sequence-Eigenschaft CURRVAL wird in Snowflake nicht unterstützt.

Beispielcode

Oracle:
 select seq1.currval from dual;
Copy
Snowflake Scripting:
 select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0069 - THE SEQUENCE CURRVAL PROPERTY IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
 seq1.currval from dual;
Copy

Best Practices

  • Sie können diesen Link überprüfen, um zu sehen, was Snowflake in Situationen empfiehlt, in denen die CURRVAL-Eigenschaft verwendet wird.

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

SSC-EWI-OR0070

Binäre Operation wird nicht unterstützt

Schweregrad

Medium

Bemerkung

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

Beschreibung

Eine binäre Operation wird derzeit nicht unterstützt, eine benutzerdefinierte Funktion wurde hinzugefügt.

Beispielcode

Oracle:
 -- Unsupported operation: EXCEPT DISTINCT
SELECT someValue MULTISET EXCEPT DISTINCT multiset_except FROM customers_demo;
Copy
Snowflake Scripting:
 -- Unsupported operation: EXCEPT DISTINCT
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0070 - BINARY OPERATION MULTISET EXCEPT IS NOT SUPPORTED ***/!!!
 someValue MULTISET EXCEPT DISTINCT multiset_except FROM
 customers_demo;
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-EWI-OR0071

Festlegen des Quantifizierers wird nicht unterstützt

Schweregrad

Niedrig

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
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0071 - 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. Im Folgenden finden Sie eine Problemumgehung für MINUS ALL und EXCEPT ALL.

 SELECT location_id FROM
(
    SELECT location_id, ROW_NUMBER()OVER(PARTITION BY location_id ORDER BY 1) rn
    FROM locations
    MINUS
    SELECT number_val, ROW_NUMBER()OVER(PARTITION BY location_id ORDER BY 1) rn
    FROM departments
);
Copy

SSC-EWI-OR0072

Procedural Member wird nicht unterstützt

Schweregrad

Medium

Bemerkung

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

Bemerkung

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

Beschreibung

Procedural Member werden derzeit nicht unterstützt. Beispiel für Procedural Member:

  • Konstante Deklarationen.

  • Cursor-Deklarationen.

  • Praktische Deklarationen.

  • Variablendeklarationen.

Beispielcode

Oracle:
 -- Additional Params: -t JavaScript
CREATE OR REPLACE EDITIONABLE PROCEDURE PROCEDURE1
   IS
   PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    NULL;
END;
Copy
Snowflake Scripting:
 --** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
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
$$
   // SnowConvert AI Helpers Code section is omitted.

   !!!RESOLVE EWI!!! /*** SSC-EWI-OR0072 - PROCEDURAL MEMBER PRAGMA DECLARATION NOT SUPPORTED. ***/!!!
   /*    PRAGMA AUTONOMOUS_TRANSACTION */
   ;
   null;
$$;
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-EWI-OR0075

Labels in Anweisungen werden nicht unterstützt

Schweregrad

Medium

Bemerkung

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

Bemerkung

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

Beschreibung

Beschriftungen in Anweisungen, die nicht auf einen Codeblock verweisen können.

Beispielcode

Oracle:
 --Additional Params: -t JavaScript
CREATE OR REPLACE EDITIONABLE PROCEDURE PROCEDURE1 
IS
BEGIN
    -- procedure body
    EXIT loop_b;
    -- procedure body continuation
END;
Copy
Snowflake Scripting:
--Additional Params: -t JavaScript
--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/16/2025",  "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
    // REGION SnowConvert AI Helpers Code
    var RAISE = function (code,name,message) {
        message === undefined && ([name,message] = [message,name])
        var error = new Error(message);
        error.name = name
        SQLERRM = `${(SQLCODE = (error.code = code))}: ${message}`
        throw error;
    };
    var SQL = {
        FOUND : false,
        NOTFOUND : false,
        ROWCOUNT : 0,
        ISOPEN : false
    };
    var _RS, _ROWS, SQLERRM = "normal, successful completion", SQLCODE = 0;
    var getObj = (_rs) => Object.assign(new Object(),_rs);
    var getRow = (_rs) => (values = Object.values(_rs)) && (values = values.splice(-1 * _rs.getColumnCount())) && values;
    var fetch = (_RS,_ROWS,fmode) => _RS.getRowCount() && _ROWS.next() && (fmode ? getObj : getRow)(_ROWS) || (fmode ? new Object() : []);
    var EXEC = function (stmt,binds,opts) {
        try {
            binds = !(arguments[1] instanceof Array) && ((opts = arguments[1]) && []) || (binds || []);
            opts = opts || new Object();
            binds = binds ? binds.map(fixBind) : binds;
            _RS = snowflake.createStatement({
                    sqlText : stmt,
                    binds : binds
                });
            _ROWS = _RS.execute();
            if (opts.sql !== 0) {
                var isSelect = stmt.toUpperCase().trimStart().startsWith("SELECT");
                var affectedRows = isSelect ? _RS.getRowCount() : _RS.getNumRowsAffected();
                SQL.FOUND = affectedRows != 0;
                SQL.NOTFOUND = affectedRows == 0;
                SQL.ROWCOUNT = affectedRows;
            }
            if (opts.row === 2) {
                return _ROWS;
            }
            var INTO = function (opts) {
                if (opts.vars == 1 && _RS.getColumnCount() == 1 && _ROWS.next()) {
                    return _ROWS.getColumnValue(1);
                }
                if (opts.rec instanceof Object && _ROWS.next()) {
                    var recordKeys = Object.keys(opts.rec);
                    Object.assign(opts.rec,Object.fromEntries(new Map(getRow(_ROWS).map((element,Index) => [recordKeys[Index],element]))))
                    return opts.rec;
                }
                return fetch(_RS,_ROWS,opts.row);
            };
            var BULK_INTO_COLLECTION = function (into) {
                for(let i = 0;i < _RS.getRowCount();i++) {
                    FETCH_INTO_COLLECTIONS(into,fetch(_RS,_ROWS,opts.row));
                }
                return into;
            };
            if (_ROWS.getRowCount() > 0) {
                return _ROWS.getRowCount() == 1 ? INTO(opts) : BULK_INTO_COLLECTION(opts);
            }
        } catch(error) {
            RAISE(error.code,error.name,error.message)
        }
    };
    var FETCH_INTO_COLLECTIONS = function (collections,fetchValues) {
        for(let i = 0;i < collections.length;i++) {
            collections[i].push(fetchValues[i]);
        }
    };
    var IS_NULL = (arg) => !(arg || arg === 0);
    var formatDate = (arg) => (new Date(arg - (arg.getTimezoneOffset() * 60000))).toISOString().slice(0,-1);
    var fixBind = function (arg) {
        arg = arg instanceof Date ? formatDate(arg) : IS_NULL(arg) ? null : arg;
        return arg;
    };
    // END REGION

    /*     -- procedure body
        EXIT loop_b */
    // procedure body
    // procedure body
    ;
    // procedure body continuation
    ;
$$;
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-EWI-OR0076

Integriertes Paket wird nicht unterstützt.

Schweregrad

Medium

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
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'UTL_RAW.CAST_TO_RAW' IS NOT CURRENTLY SUPPORTED. ***/!!!
'' AS CAST_TO_RAW,
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - 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-EWI-OR0078

Dynamische SQL-Anweisung kann nicht in „Execute Immediate“ ausgeführt werden.

Schweregrad

Medium

Beschreibung

SnowConvert AI konnte die dynamische SQL-Anweisung innerhalb von „Execute Immediate“ nicht ausführen.

Bemerkung

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

Beispielcode

Oracle:
 --Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE PROC1 AS
BEGIN
    EXECUTE IMMEDIATE 'NOT A VALID SQL STATEMENT';
END;
Copy
Snowflake Scripting:
 CREATE OR REPLACE PROCEDURE PROC1 ()
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
$$
    // SnowConvert AI Helpers Code section is omitted.

    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0078 - UNABLE TO PARSE DYNAMIC SQL STATEMENT ***/!!!
    /*EXEC(`NOT A VALID SQL STATEMENT`)*/
    ;
$$;
Copy

Best Practices

  • Überprüfen Sie die dynamische SQL-Anweisung auf einen Syntaxfehler.

  • Überprüfen Sie die SnowConvert AI-Dokumentation, um zu sehen, ob die Anweisung immer noch nicht unterstützt wird.

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

SSC-EWI-OR0082

Verschachtelter Attributausdruck kann nicht konvertiert werden

Bemerkung

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

Schweregrad

Medium

Beschreibung

Diese Fehlermeldung erscheint, wenn eine Abfrage, wie ein „Select“, versucht, auf ein Attribut innerhalb einer Spalte zuzugreifen, die als Typ definiert wurde. Sie können nicht automatisch konvertiert werden, aber sie können schnell von Hand konvertiert werden.

Beispielcode:

Oracle-Eingabecode:
 CREATE TYPE type1 AS OBJECT (
  attribute1 VARCHAR2(20),
  attribute2 NUMBER
);
CREATE TYPE type2 AS OBJECT (
  property1 type1,
  property2 DATE
);
CREATE TABLE my_table (
  id NUMBER PRIMARY KEY,
  column1 type2
);
INSERT INTO my_table VALUES (
  1, type2(type1('value1', 100), SYSDATE)
);
SELECT column1.property1.attribute1, column1.property2
FROM my_table;
Copy
Generierter Code:
 !!!RESOLVE EWI!!! /*** SSC-EWI-0056 - CUSTOM TYPES ARE NOT SUPPORTED IN SNOWFLAKE BUT REFERENCES TO THIS CUSTOM TYPE WERE CHANGED TO VARIANT ***/!!!
CREATE TYPE type1 AS OBJECT (
  attribute1 VARCHAR2(20),
  attribute2 NUMBER
)
;

!!!RESOLVE EWI!!! /*** SSC-EWI-0056 - CUSTOM TYPES ARE NOT SUPPORTED IN SNOWFLAKE BUT REFERENCES TO THIS CUSTOM TYPE WERE CHANGED TO VARIANT ***/!!!
CREATE TYPE type2 AS OBJECT (
  property1 type1,
  property2 DATE
)
;

CREATE OR REPLACE TABLE my_table (
  id NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/ PRIMARY KEY,
  column1 VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'type2' USAGE CHANGED TO VARIANT ***/!!!
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/14/2025",  "domain": "no-domain-provided" }}'
;

CREATE OR REPLACE VIEW my_table_view
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/14/2025",  "domain": "no-domain-provided" }}'
AS
SELECT
  id,
  column1:property1:attribute1 :: VARCHAR AS attribute1,
  column1:property1:attribute2 :: NUMBER AS attribute2,
  column1:property2 :: DATE AS property2
FROM
  my_table;

INSERT INTO my_table
VALUES (
  1, type2(type1('value1', 100) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'type1' NODE ***/!!!, CURRENT_TIMESTAMP()) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'type2' NODE ***/!!!
);

SELECT column1.property1.attribute1,
  column1.property2
FROM
  my_table;
Copy

Best Practices

  • Der Code kann manuell korrigiert werden, indem der ‚.‘-Accessor durch ‚:‘ ersetzt wird, überall dort, wo auf eine Type-Spalte zugegriffen wird.

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

SSC-EWI-OR0087

Reihenfolge der äußeren Verknüpfungen (Outer Joins) ist fehlgeschlagen

Schweregrad

Niedrig

Bemerkung

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

Beschreibung

Dieses Problem tritt auf, wenn bei der Neuordnung der neuen ANSI JOIN-Klauseln in einer Abfrage ein Fehler aufgetreten ist, sofern die Klauseln zuvor Outer Joins mit dem Operator (+) hatten. Eine Abfrage mit einem Zyklus von Tabellen, die sich gegenseitig in der WHERE-Klausel joinen, kann dieses Problem verursachen.

Wenn diese EWI vorhanden ist, können die JOIN-Klauseln aufgrund ihrer Reihenfolge möglicherweise nicht richtig funktionieren.

Beispielcode

Oracle-Eingabecode:
 SELECT
l.location_id, l.state_province,
r.region_id, r.region_name,
c.country_id, c.country_name
FROM 
hr.countries c,  hr.regions r,  hr.locations l, hr.departments d WHERE 
l.location_id (+) = c.region_id AND 
c.region_id (+) = r.region_id AND 
r.region_id (+) = c.region_id AND
l.location_id (+) = d.location_id;
Copy
Generierter Code:
 SELECT
l.location_id, l.state_province,
r.region_id, r.region_name,
c.country_id, c.country_name
FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0087 - ORDERING THE OUTER JOINS FAILED. QUERY MAY NOT BEHAVE CORRECTLY ***/!!!
hr.departments d
LEFT OUTER JOIN
hr.locations l
ON
l.location_id = c.region_id
AND
l.location_id = d.location_id
LEFT OUTER JOIN
hr.countries c
ON
c.region_id = r.region_id
LEFT OUTER JOIN
hr.regions r
ON
r.region_id = c.region_id;
Copy
  • Stellen Sie sicher, dass die Abfrage gültig ist und keine Tabellen enthält, die miteinander verknüpft werden.

  • Wenn das Problem weiterhin auftritt, versuchen Sie, den Namen jeder Spalte in der WHERE-Klausel mit dem Namen der Tabelle zu qualifizieren.

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

SSC-EWI-OR0089

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

Bemerkung

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

Schweregrad

Niedrig

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
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0089 - 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-EWI-OR0090

Non-Ansi Outer Join hat ein ungültiges „Between“-Prädikat

Schweregrad

Medium

Bemerkung

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

Beschreibung

Dieses Problem tritt auf, wenn ein OUTER JOIN mit dem (+)-Operator innerhalb einer BETWEEN-Klausel vorhanden ist, die in Snowflake nicht ausgeführt werden kann. Dies tritt im Allgemeinen auf, wenn mehrere Tabellen im Bereich der BETWEEN-Klausel verwendet werden.

Beispielcode

Oracle-Eingabecode:
 SELECT
*
FROM 
hr.countries c, hr.regions r,  hr.locations l WHERE 
l.location_id  BETWEEN r.region_id(+) AND c.region_id(+);
Copy
Generierter Code:
 SELECT
*
FROM
hr.countries c,
hr.regions r,
hr.locations l WHERE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0090 - INVALID NON-ANSI OUTER JOIN BETWEEN PREDICATE CASE FOR SNOWFLAKE. ***/!!!
l.location_id  BETWEEN r.region_id(+) AND c.region_id(+);
Copy

Best Practices

SSC-EWI-OR0092

Die negative Skalierung des NUMBER-Datentyps wurde aus der Ausgabe entfernt

Schweregrad

Niedrig

Beschreibung

Dieses Problem tritt auf, wenn eine NUMBER mit einer negativen Skalierung verwendet wird, um eine Rundung auf die NUMBER anzuwenden. Snowflake unterstützt dieses Feature nicht und diese Nachricht wird verwendet, um anzuzeigen, dass die Skala entfernt wurde.

Beispielcode

Oracle-Eingabecode:
Abfragen
 CREATE TABLE number_table
(
	col1 NUMBER(38),
	col2 NUMBER(38, -1),
	col3 NUMBER(*, -2)
);

INSERT INTO number_table(col1, col2, col3) VALUES (555, 555, 555);

SELECT * FROM number_table;
Copy
Ergebnis
COL1|COL2|COL3|
----+----+----+
 555| 560| 600|

Copy
Generierter Code:
Abfragen
 CREATE OR REPLACE TABLE number_table
	(
		col1 NUMBER(38) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
		col2 NUMBER(38) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0092 - NUMBER DATATYPE NEGATIVE SCALE WAS REMOVED FROM OUTPUT ***/!!! /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
		col3 NUMBER(38) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0092 - NUMBER DATATYPE NEGATIVE SCALE WAS REMOVED FROM OUTPUT ***/!!! /*** 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 number_table(col1, col2, col3) VALUES (555, 555, 555);

	SELECT * FROM
	number_table;
Copy
Ergebnis
 |COL1|COL2|COL3|
|----|----|----|
|555 |555 |555 |
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-EWI-OR0095

Operation zwischen Intervalltyp und Datentyp wird nicht unterstützt.

Schweregrad

Niedrig

Beschreibung

INTERVAL YEAR TO MONTH und INTERVAL DAY TO SECOND sind kein unterstützter Datentyp, sie werden in VARCHAR(20) transformiert. Daher werden alle arithmetischen Operationen zwischen Datentypen und den ursprünglichen Interval-Typ-Spalten nicht unterstützt.

Darüber hinaus werden Operationen zwischen einem Intervalltyp und einem Datumstyp (in dieser Reihenfolge) in Snowflake nicht unterstützt. Diese Operationen verwenden ebenfalls diese EWI.

Beispielcode

Eingabecode:
 CREATE TABLE table_with_intervals
(
    date_col DATE,
    time_col TIMESTAMP,
    intervalYearToMonth_col INTERVAL YEAR TO MONTH,
    intervalDayToSecond_col INTERVAL DAY TO SECOND
);

-- Date + Interval Y to M
SELECT date_col + intervalYearToMonth_col FROM table_with_intervals;

-- Date - Interval D to S
SELECT date_col - intervalDayToSecond_col FROM table_with_intervals;

-- Timestamp + Interval D to S
SELECT time_col + intervalDayToSecond_col FROM table_with_intervals;

-- Timestamp - Interval Y to M
SELECT time_col - intervalYearToMonth_col FROM table_with_intervals;
Copy
Generierter Code:
 CREATE OR REPLACE TABLE table_with_intervals
    (
        date_col TIMESTAMP /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/,
        time_col TIMESTAMP(6),
        intervalYearToMonth_col VARCHAR(20) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL YEAR TO MONTH DATA TYPE CONVERTED TO VARCHAR ***/!!!,
        intervalDayToSecond_col VARCHAR(20) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL DAY TO SECOND DATA TYPE CONVERTED TO VARCHAR ***/!!!
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
    ;

    -- Date + Interval Y to M
    SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! date_col + intervalYearToMonth_col FROM
    table_with_intervals;

    -- Date - Interval D to S
SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! date_col - intervalDayToSecond_col FROM
    table_with_intervals;

    -- Timestamp + Interval D to S
SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! time_col + intervalDayToSecond_col FROM
    table_with_intervals;

    -- Timestamp - Interval Y to M
SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0095 - OPERATION BETWEEN INTERVAL TYPE AND DATE TYPE NOT SUPPORTED ***/!!! time_col - intervalYearToMonth_col FROM
    table_with_intervals;
Copy

Best Practices

  • Implementieren Sie die UDF, um die Oracle-Verhaltensweise zu simulieren.

  • Extrahieren Sie den bereits transformierten Wert, der während der Migration in der Spalte gespeichert wurde, und verwenden Sie ihn nach Möglichkeit als Snowflake-Interval Constant.

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

SSC-EWI-OR0097

Procedure Properties werden in Snowflake-Prozeduren nicht unterstützt

Schweregrad

Niedrig

Beschreibung

Zusätzliche Oracle-CREATE PROCEDURE-Eigenschaften sind nicht erforderlich und haben in Snowflake CREATE PROCEDURE keine Entsprechung.

Beispielcode

Oracle-Eingabecode:
 CREATE OR REPLACE PROCEDURE PROC01
DEFAULT COLLATION USING_NLS_COMP
AUTHID CURRENT_USER
ACCESSIBLE BY (PROCEDURE PROC03)
AS
BEGIN
    NULL;
END;
Copy
Generierter Code:
 CREATE OR REPLACE PROCEDURE PROC01 ()
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
$$
    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-EWI-OR0099

Der Ausnahmecode überschreitet die Snowflake Scripting-Beschränkung

Schweregrad

Niedrig

Beschreibung

Diese EWI 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
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0099 - EXCEPTION CODE NUMBER EXCEEDS SNOWFLAKE SCRIPTING LIMITS ***/!!!
        my_exception EXCEPTION;
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0051 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED ***/!!!
        PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
    BEGIN
        NULL;
    END;
$$;
Copy

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-EWI-OR0100

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

Schweregrad

Niedrig

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": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/14/2025",  "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
    BEGIN
        --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0100 - FOR LOOP WITH MULTIPLE CONDITIONS IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
        FOR i IN REVERSE 1 TO 3
        --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
        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-EWI-OR0101

Eine bestimmte For-Loop-Klausel wird derzeit von Snowflake Scripting nicht unterstützt.

Schweregrad

Niedrig

Beschreibung

Oracle erlaubt zusätzliche Klauseln für die FOR LOOP Bedingung. Wie beispielsweise die BY-, WHILE-, und **WHEN-**Klauseln. Beide WHILE- und **WHEN-**Klauseln erlauben einen zusätzlichen booleschen Ausdruck als Bedingung. Die **BY-**Klausel ermöglicht ein schrittweises Inkrementieren in der Iteration. Diese zusätzlichen Klauseln werden in Snowflake Scripting nicht unterstützt und bei der Transformation ignoriert.

Beispielcode

Oracle-Eingabecode:
 CREATE OR REPLACE PROCEDURE P2
AS
BEGIN
FOR i IN 1..10 WHILE i <= 5 LOOP
    NULL;
END LOOP;

FOR i IN 5..15 BY 5 LOOP
    NULL;
END LOOP;
END;
Copy
Generierter Code:
 CREATE OR REPLACE PROCEDURE P2 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/14/2025",  "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
    BEGIN
        --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "WHILE" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
        FOR i IN 1 TO 10
                         --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
                         LOOP
                                NULL;
END LOOP;
                         !!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "BY" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
                         --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
                         FOR i IN 5 TO 15
                                          --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
                                          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-EWI-OR0103

Das For-Loop-Format wird derzeit von Snowflake Scripting nicht unterstützt.

Schweregrad

Hoch

Beschreibung

Oracle erlaubt verschiedene Arten von Bedingungen für FOR LOOP. Es unterstützt boolesche Ausdrücke, Sammlungen, Datensätze … Snowflake Scripting unterstützt jedoch nur FOR LOOP mit definierten Integer-Grenzen. Alle anderen Formate gelten als nicht unterstützt und müssen manuell angepasst werden.

Oracle-Iterierungskontrollklauseln die in Snowflake FOR LOOP nicht unterstützt werden:

  • single_expression_control

  • values_of_control

  • indices_of_control

  • pairs_of_control

Gefahr

cursor_iteration_control ist derzeit als nicht unterstützt markiert. Das Entfernen der Klammern aus dem Ausdruck sollte ihn in CURSOR FOR LOOP transformieren.

Original:

FOR i IN (cursor_variable) LOOP NULL; END LOOP;

Sollte geändert werden in:

FOR i IN cursor_variable LOOP NULL; END LOOP;

Beispielcode

Oracle-Eingabecode:
 CREATE OR REPLACE PROCEDURE P3
AS
TYPE values_aat IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
l_employee_values   values_aat;
BEGIN
FOR power IN REPEAT power*2 WHILE power <= 64 LOOP
    NULL;
END LOOP;

FOR i IN VALUES OF l_employee_values 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": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/14/2025",  "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
    DECLARE
--        !!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'PL COLLECTION TYPE DEFINITION' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
--        TYPE values_aat IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
        l_employee_values VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'values_aat' USAGE CHANGED TO VARIANT ***/!!!;
    BEGIN
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0103 - FOR LOOP FORMAT IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
        --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "WHILE" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
        FOR power IN REPEAT power*2 WHILE power <= 64
                                                      --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
                                                      LOOP
            NULL;
        END LOOP;
        !!!RESOLVE EWI!!! /*** SSC-EWI-OR0103 - FOR LOOP FORMAT IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
        --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **

        FOR i IN VALUES OF :l_employee_values
                                              --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
                                              LOOP
            NULL;
        END LOOP;
    END;
$$;
Copy

Best Practices

  • Schreiben Sie die FOR LOOP-Bedingung neu oder verwenden Sie eine andere Art von LOOP, um das Verhalten zu simulieren.

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

SSC-EWI-OR0104

Nicht verwendbare Sammlungsvariable

Schweregrad

Hoch

Beschreibung

Oracle-Sammlungen werden derzeit nicht von SnowConvert AIunterstützt. Alle Variablen der Sammlungstypen und deren Verwendung werden auskommentiert.

Bemerkung

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

Beispielcode

Oracle-Eingabecode:
 -- Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE collection_variable_sample_proc
IS
    TYPE POPULATION IS TABLE OF NUMBER INDEX BY VARCHAR2(64); --Associative array
    city_population POPULATION := POPULATION();
    i  VARCHAR2(64);
BEGIN
	city_population('Smallville')  := 2000;
    city_population('Midland')     := 750000;

    i := city_population.FIRST;
    i := city_population.NEXT(1);
END;
Copy
Ausgabecode
 CREATE OR REPLACE PROCEDURE collection_variable_sample_proc ()
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
$$
	// SnowConvert AI Helpers Code section is omitted.

	!!!RESOLVE EWI!!! /*** SSC-EWI-OR0072 - PROCEDURAL MEMBER TYPE DEFINITION NOT SUPPORTED. ***/!!!
	/*     TYPE POPULATION IS TABLE OF NUMBER INDEX BY VARCHAR2(64) */
	;
	!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
	/*     city_population POPULATION := POPULATION() */
	;
	let I;
	!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
	/* 	city_population('Smallville')  := 2000 */
	;
	!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
	/*     city_population('Midland')     := 750000 */
	;
	I =
		!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
		/*city_population.FIRST*/
		null;
	I =
		!!!RESOLVE EWI!!! /*** SSC-EWI-OR0104 - UNUSABLE VARIABLE, ITS TYPE WAS NOT TRANSFORMED ***/!!!
		/*city_population.NEXT(1)*/
		null;
$$;
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-EWI-OR0105

Zusätzliche Arbeit ist für die Verwendung von BFILE-Spalten erforderlich. Die BUILD_STAGE_URL-Funktion wird als empfohlene Problemumgehung empfohlen.

Schweregrad

Niedrig

Beschreibung

Der BFILE-Datentyp wird in VARCHAR transformiert. Die Übersetzung der Oracle-Built-in-Funktionen zur Interaktion mit BFILE-Typen wird derzeit jedoch nicht unterstützt. Die Spalte wird in eine VARCHAR migriert, um den Dateipfad und den Dateinamen zu speichern (siehe BFILENAME_UDF-Dokumentation für weitere Informationen).

Bemerkung

Die BUILD_STAGE_FILE_URL-Funktion ist eine empfohlene Problemumgehung für die Arbeit mit Dateien in Snowflake. Sie gibt einen Link zu der angegebenen Datei zurück, die in einem Stagingbereich gespeichert ist. Prüfen Sie die Funktionsdokumentation hier.

Beispielcode

Oracle-Eingabecode:
 CREATE TABLE bfiletable ( bfile_column BFILE );

INSERT INTO bfiletable VALUES ( BFILENAME('mydirectory', 'myfile.png') );
Copy
Generierter Code:
 CREATE OR REPLACE TABLE bfiletable ( bfile_column
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0105 - ADDITIONAL WORK IS NEEDED FOR BFILE COLUMN USAGE. BUILD_STAGE_FILE_URL FUNCTION IS A RECOMMENDED WORKAROUND ***/!!!
VARCHAR
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;

INSERT INTO bfiletable
VALUES (PUBLIC.BFILENAME_UDF('mydirectory', 'myfile.png') );
Copy

Best Practices

  • Verwenden Sie die BUILD_STAGE_FILE_URL und die anderen Dateifunktionen zur Verarbeitung von Dateien.

Snowflake-Abfrage
 CREATE OR REPLACE TABLE bfiletable ( bfile_column
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0105 - ADDITIONAL WORK IS NEEDED FOR BFILE COLUMN USAGE. BUILD_STAGE_FILE_URL FUNCTION IS A RECOMMENDED WORKAROUND ***/!!!
VARCHAR
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;

INSERT INTO bfiletable
VALUES (PUBLIC.BFILENAME_UDF('mydirectory', 'myfile.png') );
Copy
Ergebnis
URL                                                                                                   |
------------------------------------------------------------------------------------------------------+
https://thecompany.snowflakecomputing.com/api/files/CODETEST/PUBLIC/MY_STAGE/%2Fmydirectory%2Fmyfile.jpg|

Copy

Bemerkung

Diese Funktion arbeitet mit verschiedenen Cloud-Speicheroptionen. Informationen zur Verwendung lokaler Dateien mit Stages findest du in dieser Dokumentation.

  • Ändern Sie den Datentyp in einen unterstützten Typ.

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

SSC-EWI-OR0108

Die folgende Zuweisungsanweisung wird von Snowflake Scripting nicht unterstützt

Bemerkung

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

Schweregrad

Medium

Beschreibung

Einige Oracle-Variablentypen haben keine direkte Übersetzung in Snowflake. Derzeit werden Transformationen für Cursor-, Collection-, Record- und benutzerdefinierte Typvariablen sowie Platzhalter, Objekte und Output-Parameter von Snow Scripting nicht unterstützt.

Das Ändern dieser Variablen in semi-strukturierte Snowflake-Datentypen kann in einigen Szenarien als Workaround helfen.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE pinvalidassign(out_parameter   IN OUT NUMBER)
AS
record_variable       employees%ROWTYPE;

TYPE cursor_type IS REF CURSOR;
cursor1   cursor_type;
cursor2   SYS_REFCURSOR;

TYPE collection_type IS TABLE OF NUMBER INDEX BY VARCHAR(64);
collection_variable     collection_type;

BEGIN
--Record Example
  record_variable.last_name := 'Ortiz';

--Cursor Example
  cursor1 := cursor2;
  
--Collection
  collection_variable('Test') := 5;

--Out Parameter
  out_parameter := 123;
END;
Copy
Generierter Code:
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "employees" **
CREATE OR REPLACE PROCEDURE pinvalidassign (out_parameter 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/16/2025",  "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
  DECLARE
    record_variable OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
--    !!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'PL REF CURSOR TYPE DEFINITION' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!

--    TYPE cursor_type IS REF CURSOR;
    cursor1_res RESULTSET;
    cursor2_res RESULTSET;
--    !!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'PL COLLECTION TYPE DEFINITION' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!

--    TYPE collection_type IS TABLE OF NUMBER INDEX BY VARCHAR(64);
    collection_variable VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'collection_type' USAGE CHANGED TO VARIANT ***/!!!;
  BEGIN
    --Record Example
    record_variable := OBJECT_INSERT(record_variable, 'LAST_NAME', 'Ortiz', true);

    --Cursor Example
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0108 - THE FOLLOWING ASSIGNMENT STATEMENT IS NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
      cursor1 := :cursor2;

    --Collection
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0108 - THE FOLLOWING ASSIGNMENT STATEMENT IS NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
      collection_variable('Test') := 5;
    --Out Parameter
    out_parameter := 123;
  END;
$$;
Copy

Best Practices

SSC-EWI-OR0109

Ausdrücke als Using Clause-Argumente werden von Snowflake Scripting nicht unterstützt

Schweregrad

Medium

Beschreibung

Oracle unterstützt die Verwendung von Ausdrücken als Argumente für jede USING-Klausel in EXECUTE IMMEDIATE-Anweisungen. Diese Funktionalität wird von Snowflake Scripting nicht unterstützt.

Snowflake Scripting unterstützt variable Ausdrücke. Daher ist es möglich, den Ausdruck zu ersetzen, indem Sie ihn manuell einer Variablen zuweisen (siehe Beispiel unten).

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE expression_arguments
IS
  immediate_input INTEGER := 0;
BEGIN
  EXECUTE IMMEDIATE 'INSERT INTO immediate_table VALUES (:value)' USING immediate_input+1;
END;
Copy
Generierter Code:
 CREATE OR REPLACE PROCEDURE expression_arguments ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
  DECLARE
    immediate_input INTEGER := 0;
  BEGIN
    !!!RESOLVE EWI!!! /*** SSC-EWI-0030 - THE STATEMENT BELOW HAS USAGES OF DYNAMIC SQL. ***/!!!
    EXECUTE IMMEDIATE 'INSERT INTO immediate_table
VALUES (?)' USING (
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0109 - EXPRESSIONS AS ARGUMENTS OF USING CLAUSE IS NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
    :immediate_input +1);
  END;
$$;
Copy
Manuell migrierte EXECUTE IMMEDIATE-Prozedur:

Wenn Sie diese Prozedur durch die obige Prozedur ersetzen, wird der Kompilierungsfehler behoben, und Sie erhalten die gleichen Ergebnisse wie bei Oracle.

 CREATE OR REPLACE PROCEDURE PUBLIC.expression_arguments ()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
   DECLARE
      immediate_input INTEGER := 0;
      using_argument_variable INTEGER;
   BEGIN
      using_argument_variable := immediate_input+1;
      EXECUTE IMMEDIATE 'INSERT INTO PUBLIC.immediate_table VALUES (?)' USING (using_argument_variable );
   END;
$$;
Copy

Best Practices

  • Prozeduren können manuell migriert werden, indem eine Variable hinzugefügt und dann der Ausdruck dieser Variablen zugewiesen wird.

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

SSC-EWI-OR0110

For Update-Klausel wird in Snowflake nicht unterstützt

Bemerkung

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

Schweregrad

Hoch

Beschreibung

Es gibt keine Entsprechung für die FOR UPDATE-Klausel in Snowflake Scripting. Es wird also eine EWI hinzugefügt und die Klausel wird auskommentiert.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE for_update_clause
AS
    update_record f_employee%rowtype;
    CURSOR c1 IS SELECT * FROM f_employee FOR UPDATE OF employee_number nowait;
BEGIN
    FOR CREC IN C1 LOOP
	UPDATE f_employee SET employee_number = employee_number + 1000 WHERE CURRENT OF c1;
	IF crec.id = 2 THEN
	    DELETE FROM f_employee WHERE CURRENT OF c1;
	    EXIT;
	END IF;
    END LOOP;
END;
Copy
Generierter Code:
 --** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "f_employee" **
CREATE OR REPLACE PROCEDURE for_update_clause ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/14/2025",  "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
	DECLARE
		update_record OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
		--** SSC-PRF-0009 - PERFORMANCE REVIEW - CURSOR USAGE **
		c1 CURSOR
		FOR
			SELECT * FROM
				f_employee
			!!!RESOLVE EWI!!! /*** SSC-EWI-OR0110 - FOR UPDATE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
			FOR UPDATE OF employee_number nowait;
	BEGIN
		OPEN C1;
		--** SSC-PRF-0004 - THIS STATEMENT HAS USAGES OF CURSOR FOR LOOP **
		FOR CREC IN C1 DO
			!!!RESOLVE EWI!!! /*** SSC-EWI-OR0136 - CURRENT OF CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
			UPDATE f_employee
				SET employee_number =
 				                     !!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!! employee_number + 1000 WHERE CURRENT OF c1;
			IF (crec.id = 2) THEN
--				!!!RESOLVE EWI!!! /*** SSC-EWI-0058 - FUNCTIONALITY FOR 'CURRENT OF' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
--				DELETE FROM
--					f_employee
--				WHERE CURRENT OF c1
				                   ;
				EXIT;
			END IF;
		END FOR;
		CLOSE C1;
	END;
$$;
Copy

Best Practices

SSC-EWI-OR0116

Operationen zwischen Intervallen werden nicht unterstützt

Schweregrad

Medium

Bemerkung

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

Beschreibung

Dieser Fehler wird hinzugefügt, wenn es einen arithmetischen Vorgang gibt, deren Operanden nur Intervalle sind. Diese Art von Vorgang wird von Snowflake nicht unterstützt.

Beispielcode

Eingabecode:
 SELECT INTERVAL '1-1' YEAR(2) TO MONTH + INTERVAL '1-1' YEAR(2) + INTERVAL '1-1' YEAR(2) TO MONTH FROM dual;

SELECT INTERVALCOLUMN + INTERVAL '1-1' YEAR(2) TO MONTH FROM INTERVALTABLE;
Copy
Generierter Code:
 SELECT
--INTERVAL '1-1 year' + INTERVAL '1y, 1mm' + INTERVAL '1y, 1mm'
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0116 - OPERATIONS BETWEEN INTERVALS ARE NOT SUPPORTED BY SNOWFLAKE ***/!!!
null
FROM dual;


SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN Unknown AND Interval ***/!!! INTERVALCOLUMN + INTERVAL '1y, 1mm'
FROM
INTERVALTABLE;
Copy

Best Practices

  • Je nachdem, wo sich der Vorgang befindet, kann er verschoben und durch Hinzufügen von Datumsangaben oder Zeitstempeln gültig gemacht werden.

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

SSC-EWI-OR0118

Integrierte Ansichten/Tabellen werden von Snowflake nicht unterstützt

Schweregrad

Medium

Beschreibung

Oracle verfügt über einen Satz integrierter Ansichten und Tabellen, die in Snowflake nicht vorhanden sind. SnowConvert AI fügt daher eine Fehlermeldung zu Abfragen und Anweisungen hinzu, die diese Elemente verwenden.

Beispielcode

Eingabecode:
 SELECT * FROM ALL_COL_COMMENTS;
SELECT * FROM (SELECT * FROM ALL_COL_COMMENTS);
Copy
Generierter Code:
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0118 - TRANSLATION FOR ORACLE BUILT-IN TABLE/VIEW 'ALL_COL_COMMENTS' IS NOT CURRENTLY SUPPORTED. ***/!!!
 * FROM
 ALL_COL_COMMENTS;

SELECT * FROM (SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0118 - TRANSLATION FOR ORACLE BUILT-IN TABLE/VIEW 'ALL_COL_COMMENTS' IS NOT CURRENTLY SUPPORTED. ***/!!! * FROM
ALL_COL_COMMENTS);
Copy

Best Practices

SSC-EWI-OR0121

Die Verwendung des DBMS_LOB.SUBSTR-Built-in-Pakets mit einer BFILE-Spalte wird in Snowflake nicht unterstützt.

Schweregrad

Medium

Beschreibung

Oracle-BFILE-Spalten werden in Snowflake zu VARCHAR migriert. Der Dateiname wird in der neuen Spalte als Zeichenfolge gespeichert. Daher gibt die Verwendung einer SUBSTR-Funktion in Snowflake für die migrierte Spalte einen Teilstring des Dateinamens zurück. Oracle DBMS_LOB.SUBSTR gibt stattdessen einen Teilstring des Dateiinhalts zurück. Weitere Informationen finden Sie im Abschnitt zum BFILE-Datentyp.

Beispielcode

Eingabecode:
 CREATE TABLE table1
(
    bfile_column BFILE
)
SELECT 
DBMS_LOB.SUBSTR(bfile_column, 15, 1)
FROM table1;
Copy
Generierter Code:
 CREATE OR REPLACE TABLE table1
    (
        bfile_column
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0105 - ADDITIONAL WORK IS NEEDED FOR BFILE COLUMN USAGE. BUILD_STAGE_FILE_URL FUNCTION IS A RECOMMENDED WORKAROUND ***/!!!
    VARCHAR
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
    ;
    SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0121 - USING DBMS_LOB.SUBSTR ON BFILE SOURCE COLUMN IS NOT SUPPORTED ON SNOWFLAKE ***/!!!
    SUBSTR(bfile_column, 1, 15)
    FROM
    table1;
Copy

Best Practices

  • Lesen Sie die Dokumentation zur Verwendung von Dateien mit Snowflake hier.

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

SSC-EWI-OR0123

Database Link-Verbindungen werden nicht unterstützt

Schweregrad

Medium

Beschreibung

Eine Database Link-Verbindungsreferenz wurde aus dem Objektnamen entfernt, da die Database Links und deren Referenzen von Snowflake nicht unterstützt werden. Der einzige Teil, der beibehalten wird, ist der Name vor dem @-Zeichen.

Beispielcode

Eingabecode:
 -- Creation of the database link
CREATE DATABASE LINK mylink
    CONNECT TO user1 IDENTIFIED BY password1
    USING 'connection_str';

-- Statements that use the database link we created
SELECT * FROM employees@mylink;

INSERT INTO employees@mylink
    (employee_id, last_name, email, hire_date, job_id)
    VALUES (999, 'Claus', 'sclaus@oracle.com', SYSDATE, 'SH_CLERK');

UPDATE employees@mylink SET min_salary = 3000
    WHERE job_id = 'SH_CLERK';

DELETE FROM employees@mylink
    WHERE employee_id = 999;
Copy
Generierter Code:
 ---- Creation of the database link
----** SSC-OOS - OUT OF SCOPE CODE UNIT. CREATE DATABASE LINK IS OUT OF TRANSLATION SCOPE. **
--CREATE DATABASE LINK mylink
--    CONNECT TO user1 IDENTIFIED BY password1
--    USING 'connection_str'

    -- Statements that use the database link we created
SELECT * FROM
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
    employees;

INSERT INTO
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
employees
    (employee_id, last_name, email, hire_date, job_id)
    VALUES (999, 'Claus', 'sclaus@oracle.com', CURRENT_TIMESTAMP(), 'SH_CLERK');

UPDATE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
employees
    SET min_salary = 3000
    WHERE job_id = 'SH_CLERK';

DELETE FROM
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0123 - DBLINK CONNECTIONS NOT SUPPORTED [ DBLINK : mylink | USER: user1/password1 | CONNECTION: 'connection_str' ] ***/!!!
    employees
    WHERE employee_id = 999;
Copy

Best Practices

  • Es ist wichtig zu prüfen, dass alle DB-Links unterschiedliche Namen haben. Wenn zwei DB-Links denselben Namen verwenden und der Code mehrfach migriert wird, kann die EWI die Informationen ändern – abhängig davon, welcher DB-Link zuerst verarbeitet wird.

  • Verschieben Sie die Datenbankobjekte aus der Database Link-Referenz in dieselbe Datenbankinstanz, die in Snowflake verwendet wird.

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

SSC-EWI-OR0126

Nicht verwendbares Objekt, da der integrierte benutzerdefinierte Typ nicht unterstützt wird

Schweregrad

Medium

Beschreibung

Dieser Fehler tritt auf, um anzuzeigen, ob ein Objekt mit einem integrierten benutzerdefinierten Typ verwendet wird.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE proc01 is
   var1 DBMS_SQL.VARCHAR2_TABLE;
   var2 CTX_CLS.DOC_TAB;
BEGIN 
   varX := var1.property;
   varY := var2(1);
END;
Copy
Generierter Code:
 CREATE OR REPLACE PROCEDURE proc01 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
   DECLARE
      var1 VARIANT /*** SSC-FDM-0015 - REFERENCED CUSTOM TYPE 'DBMS_SQL.VARCHAR2_TABLE' IN QUERY NOT FOUND, USAGES MAY BE AFFECTED ***/;
      var2 VARIANT /*** SSC-FDM-0015 - REFERENCED CUSTOM TYPE 'CTX_CLS.DOC_TAB' IN QUERY NOT FOUND, USAGES MAY BE AFFECTED ***/;
   BEGIN
      varX := var1.property !!!RESOLVE EWI!!! /*** SSC-EWI-OR0126 - UNUSABLE OBJECT var1, BUILT-IN CUSTOM TYPES ARE NOT SUPPORTED ***/!!!;
      varY := var2(1) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0126 - UNUSABLE OBJECT var2, BUILT-IN CUSTOM TYPES ARE NOT SUPPORTED ***/!!!;
   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-EWI-OR0128

Das boolesche Cursorattribut wird nicht unterstützt.

Bemerkung

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

Schweregrad

Niedrig

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": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/14/2025",  "domain": "no-domain-provided" }}'
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();
        --** SSC-PRF-0009 - PERFORMANCE REVIEW - CURSOR USAGE **
        my_cursor CURSOR
        FOR
            SELECT
                OBJECT_CONSTRUCT( *) sc_cursor_record FROM
                table1;
    BEGIN
        OPEN my_cursor;
        --** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
        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*/!!!RESOLVE EWI!!! /*** SSC-EWI-OR0128 - 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-EWI-OR0129

TYPE-Attribut konnte nicht aufgelöst werden.

Schweregrad

Niedrig

Bemerkung

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

Beschreibung

Diese Warnung erscheint, wenn das TYPE-Attribut, auf das verwiesen wurde, nicht aufgelöst werden und der Datentyp des referenzierenden Elements nicht ermittelt werden konnte. Stattdessen wird der Datentyp VARIANT zugewiesen.

Beispielcode

Eingabecode:
 CREATE OR REPLACE PROCEDURE procedure01
IS
var1 table01.col1%TYPE;
BEGIN
NULL;
END;
Copy
Generierter Code:
 CREATE OR REPLACE PROCEDURE procedure01 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
var1 VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-OR0129 - TYPE ATTRIBUTE 'table01.col1%TYPE' COULD NOT BE RESOLVED, SO IT WAS TRANSFORMED TO VARIANT ***/!!!;
BEGIN
NULL;
END;
$$;
Copy

Best Practices

  • Suchen Sie den Datentyp des referenzierten Elements, und ersetzen Sie diesen manuell im referenzierenden Element-TYPE-Attribut.

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

SSC-EWI-OR0133

Cursorvariable wurde bereits zugewiesen

Schweregrad

Medium

Beschreibung

Wenn eine OPEN FOR-Anweisung konvertiert wird, wird eine Cursorzuweisung mit demselben Namen wie die im Eingangscode verwendete Cursorvariable hinzugefügt – zusammen mit weiteren Anweisungen, um die Funktion zu emulieren. Da es möglich ist, mehrere OPEN FOR-Anweisungen mit derselben Cursorvariable zu verwenden, wird es im Ausgabecode mehrere Cursorzuweisungen mit demselben Namen geben. Wenn Sie den Ausgabecode so belassen, wie er ist, führt dies bei der Ausführung in Snowflake zu Kompilierungsfehlern.

Beispielcode

Eingabecode
 CREATE OR REPLACE PROCEDURE open_for_procedure
AS 
	query1 VARCHAR(200) := 'SELECT 123 FROM dual';
	query2 VARCHAR(200) := 'SELECT 456 FROM dual';
	my_cursor_variable SYS_REFCURSOR;
BEGIN
	OPEN my_cursor_variable FOR query1;
	OPEN my_cursor_variable FOR query2;
END;
Copy
Generierter Code
 CREATE OR REPLACE PROCEDURE open_for_procedure ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
	DECLARE
		query1 VARCHAR(200) := 'SELECT 123 FROM dual';
		query2 VARCHAR(200) := 'SELECT 456 FROM dual';
		my_cursor_variable_res RESULTSET;
	BEGIN
		!!!RESOLVE EWI!!! /*** SSC-EWI-0030 - THE STATEMENT BELOW HAS USAGES OF DYNAMIC SQL. ***/!!!
		my_cursor_variable_res := (
			EXECUTE IMMEDIATE :query1
		);
		LET my_cursor_variable CURSOR
		FOR
			my_cursor_variable_res;
		OPEN my_cursor_variable;
		!!!RESOLVE EWI!!! /*** SSC-EWI-0030 - THE STATEMENT BELOW HAS USAGES OF DYNAMIC SQL. ***/!!!
		my_cursor_variable_res := (
			EXECUTE IMMEDIATE :query2
		);
		!!!RESOLVE EWI!!! /*** SSC-EWI-OR0133 - THE CURSOR VARIABLE NAMED 'my_cursor_variable' HAS ALREADY BEEN ASSIGNED IN ANOTHER CURSOR ***/!!!
		LET my_cursor_variable CURSOR
		FOR
			my_cursor_variable_res;
		OPEN my_cursor_variable;
	END;
$$;
Copy

Zugehörige EWI-Meldung

  1. SSC-EWI-0030: Die folgende -Anweisung enthält Verwendungen von dynamischem SQL.

Best Practices

  • Um die Kompilierungsfehler im Ausgabecode zu beheben, sollten die Cursorzuweisungen, die die SSC-EWI-OR0133-Nachricht enthalten, umbenannt werden.

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

SSC-EWI-OR0135

Datenaufbewahrungsfrist gibt möglicherweise keine Ergebnisse aus

Schweregrad

Niedrig

Beschreibung

Wenn eine Abfrage in Snowflake mithilfe von Time Travel ausgeführt wird, gibt sie möglicherweise keine Ergebnisse zurück, wenn die angegebene Zeit nicht mehr im Bereich der Datenaufbewahrungsfrist liegt. Wir empfehlen, sich umfassend über Time Travel von Snowflake zu informieren.

Beispielcode

Eingabecode
 SELECT * FROM employees
AS OF TIMESTAMP
TO_TIMESTAMP('2023-09-27 07:00:00', 'YYYY-MM-DD HH:MI:SS')
WHERE last_name = 'SampleName';
Copy
Generierter Code
 SELECT * FROM
employees
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0135 - DATA RETENTION PERIOD MAY PRODUCE NO RESULTS ***/!!!
AT (TIMESTAMP =>
TO_TIMESTAMP('2023-09-27 07:00:00', 'YYYY-MM-DD HH:MI:SS'))
WHERE last_name = 'SampleName';
Copy

Best Practices

SSC-EWI-OR0136

Die „Current of“-Klausel wird in Snowflake nicht unterstützt

Schweregrad

Kritisch

Beschreibung

Einige Anweisungen wie UPDATE und DELETE können eine CURRENT OF-Klausel innerhalb der WHERE-Klausel enthalten; dies wird derzeit von Snowflake nicht unterstützt.

Beispielcode

Oracle:
 CREATE OR REPLACE PROCEDURE proc_update_current_of
AS
  CURSOR C1
  IS
    SELECT * FROM F_EMPLOYEE FOR UPDATE OF SALARY nowait;
BEGIN
  FOR CREC IN C1
  LOOP
    UPDATE F_EMPLOYEE SET SALARY=SALARY+2000 WHERE CURRENT OF C1;
  END LOOP;
END;
Copy
Snowflake Scripting:
 --** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "F_EMPLOYEE" **
CREATE OR REPLACE PROCEDURE proc_update_current_of ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "07/14/2025",  "domain": "no-domain-provided" }}'
EXECUTE AS CALLER
AS
$$
  DECLARE
    --** SSC-PRF-0009 - PERFORMANCE REVIEW - CURSOR USAGE **
    C1 CURSOR
    FOR
      SELECT * FROM
        F_EMPLOYEE
      !!!RESOLVE EWI!!! /*** SSC-EWI-OR0110 - FOR UPDATE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
      FOR UPDATE OF SALARY nowait;
  BEGIN
      OPEN C1;
      --** SSC-PRF-0004 - THIS STATEMENT HAS USAGES OF CURSOR FOR LOOP **
      FOR CREC IN C1 DO
      !!!RESOLVE EWI!!! /*** SSC-EWI-OR0136 - CURRENT OF CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
      UPDATE F_EMPLOYEE
        SET SALARY=
                   !!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!!SALARY+2000 WHERE CURRENT OF C1;
      END FOR;
      CLOSE C1;
  END;
$$;
Copy

Zugehörige EWI-Meldung

  1. SSC-EWI-OR0036: Bei Problemen mit der Auflösung von Typen verhält sich die arithmetische Operation zwischen Zeichenfolge und Datum möglicherweise nicht korrekt.

  2. SSC-PRF-0004: Diese Anweisung kann den Cursor für einen Loop verwenden.

  3. SSC-EWI-OR0110: Die „For Update“-Klausel wird in Snowflake nicht unterstützt.

Best Practices

  • Formulieren Sie die Abfrage neu als normale UPDATE- oder DELETE-Funktion und geben Sie die Spalten in der WHERE-Klausel explizit an. Beachten Sie dabei, dass bei doppelten Datensätzen in der Tabelle die Abfrage diese mehrfach beeinflussen kann.

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

SSC-EWI-OR0137

Die Typattributreferenz wird möglicherweise nicht unterstützt, daher wurde sie in den Variant-Datentyp umgewandelt.

Schweregrad

Kritisch

Beschreibung

TYPE ATTRIBUTE ‚TYPEUSED%TYPE‘ MIGHT BE UNSUPPORTED, SO IT WAS TRANSFORMED TO VARIANT

Beispielcode

Oracle:
CREATE OR REPLACE TABLE MYTABLE
(
  LOG_ID URITYPE
);

CREATE OR REPLACE PROCEDURE some_procedure()
IS
  L_MESSAGE MYTABLE.LOG_ID%TYPE;
BEGIN
  NULL;
END;
Copy
Snowflake Scripting:
CREATE OR REPLACE TABLE MYTABLE
  (
  !!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
    LOG_ID URITYPE
  )
  COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "10/01/2025",  "domain": "no-domain-provided",  "migrationid": "aqCZAdErg3K0P04NglqCCg==" }}'
  ;

  CREATE OR REPLACE PROCEDURE some_procedure ()
  RETURNS VARCHAR
  LANGUAGE SQL
  COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "10/01/2025",  "domain": "no-domain-provided",  "migrationid": "aqCZAdErg3K0P04NglqCCg==" }}'
  EXECUTE AS CALLER
  AS
  $$
  DECLARE
      L_MESSAGE VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-OR0137 - TYPE ATTRIBUTE 'MYTABLE.LOG_ID%TYPE' MIGHT BE UNSUPPORTED, SO IT WAS TRANSFORMED TO VARIANT ***/!!!;
  BEGIN
      NULL;
  END;
  $$;
Copy

Best Practices