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.
STARTWITHLIMIT VALUEist spezifisch füridentity_optionsund kann nur mitALTERTABLEMODIFYverwendet werden. Wenn SieSTARTWITHLIMIT VALUEangeben, sperrt die Oracle Datenbank die Tabelle und findet den maximalen Wert der Identitätsspalte in der Tabelle (für zunehmende Sequenzen) oder den minimalen Wert der Identitätsspalte (für abnehmende Sequenzen) und weist den Wert als Höchstwert des Sequenzgenerators zu. Der nächste vom Sequenzgenerator zurückgegebene Wert entspricht dem High-Water-Mark +INCREMENTBYIntegerbei aufsteigenden Sequenzen bzw. dem High-Water-Mark -INCREMENTBYIntegerbei absteigenden Sequenzen.
ALTER TABLE ORACLE¶
Beispielcode¶
Eingabecode:¶
CREATE SEQUENCE SEQUENCE1
START WITH LIMIT VALUE;
Generierter Code:¶
CREATE OR REPLACE SEQUENCE SEQUENCE1
!!!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"}}';
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;
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;
$$;
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);
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);
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;
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;
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;
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;
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);
Generierter Code:¶
--!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
;
Best Practices¶
Es sind keine Aktionen des Endbenutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-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;
Generierter Code:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0008 - UNKNOWN FORMAT, MAY HAVE UNEXPECTED BEHAVIOR ***/!!!
TO_CHAR(DATE '1998-12-25','iw-iyyy'') FROM DUAL;
Bemerkung
Beachten Sie, dass „iw-iyyy“ kein unterstütztes Format ist.
Best Practices¶
Weitere Informationen für unterstützte Zeitstempelformate finden Sie in der Dokumentation.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
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;
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);
Generierter Code:¶
SELECT * FROM
table1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0010 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE. IT REQUIRES MANUAL FIX ***/!!!
PARTITION(col1);
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" ...
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;
Generierter Code:¶
SELECT
TO_NUMBER('12.48', '99.99', 38, 2)
FROM DUAL;
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;
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;
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;
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;
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;
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;
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>')));
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>')));
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
Generierter Code:¶
SELECT
REGEXP_INSTR('CORPORATE FLOOR','OR', -3, 2) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0020 - NEGATIVE VALUES NOT SUPPORTED FOR FUNCTION ***/!!! FROM DUAL;
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;
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;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
Snowflake Scripting:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0026 - ROWID NOT SUPPORTED ***/!!!
QUERY_NAME.ROWID from
TABLE1;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
Generierter Code:¶
SELECT
PUBLIC.TO_NUMBER_UDF('2,00', 0) "Value" FROM DUAL;
Best Practices¶
Sie können UDF erstellen, um das Verhalten des
DEFAULT-WertsON CONVERSION ERRORzu emulieren.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-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;
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;
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;
Generierter Code:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0031 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE ***/!!!
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Best Practices¶
Die Funktion wird in eine benutzerdefinierte Funktion(Stub) umgewandelt, sodass Sie sie anpassen können, um das Verhalten des SYS_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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
Best Practices¶
Wenn in der Datenhierarchie Zyklen vorhanden sind, können Sie diesen [Artikel] (https://docs.snowflake.com/en/user-guide/queries-cte#cause-1-cyclic-data-hierarchy) lesen, um damit umzugehen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
Bitte überprüfen Sie den folgenden Link für einen manuellen Workaround: https://community.snowflake.com/s/article/NOCYCLE-workaround
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)
();
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)
();
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
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;
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;
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;
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
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;
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;
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;
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;
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;
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;
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;
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;
/
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;
$$;
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;
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
;
$$;
Bemerkung
Einige Teile in den Ausgabecodes werden weggelassen, um die Lesbarkeit zu erleichtern.
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
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;
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;
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;
$$;
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);
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);
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;
CREATE SEQUENCE SEQUENCE2
START WITH -9223372036854775809;
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"}}';
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"}}';
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;
Snowflake Scripting:¶
select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0069 - THE SEQUENCE CURRVAL PROPERTY IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
seq1.currval from dual;
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;
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;
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;
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;
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 ALLundEXCEPT 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
);
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
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;
$$;
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;
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
;
$$;
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;
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;
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;
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`)*/
;
$$;
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;
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;
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;
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;
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;
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;
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(+);
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(+);
Best Practices¶
Ändern Sie den Outer Join in ANSI-Syntax.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
Ergebnis¶
COL1|COL2|COL3|
----+----+----+
555| 560| 600|
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;
Ergebnis¶
|COL1|COL2|COL3|
|----|----|----|
|555 |555 |555 |
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;
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;
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;
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;
$$;
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;
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;
$$;
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;
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;
$$;
Best Practices¶
Trennen Sie
FOR LOOPin verschiedene Schleifen oder schreiben Sie die Bedingung neu.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-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;
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;
$$;
Best Practices¶
Trennen Sie
FOR LOOPin verschiedene Schleifen oder schreiben Sie die Bedingung neu.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-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_controlvalues_of_controlindices_of_controlpairs_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;
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;
$$;
Best Practices¶
Schreiben Sie die
FOR LOOP-Bedingung neu oder verwenden Sie eine andere Art vonLOOP, 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;
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;
$$;
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') );
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') );
Best Practices¶
Verwenden Sie die
BUILD_STAGE_FILE_URLund 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') );
Ergebnis¶
URL |
------------------------------------------------------------------------------------------------------+
https://thecompany.snowflakecomputing.com/api/files/CODETEST/PUBLIC/MY_STAGE/%2Fmydirectory%2Fmyfile.jpg|
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;
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;
$$;
Best Practices¶
Ändern Sie den Datentyp der Variable oder versuchen Sie, das Verhalten mithilfe von semi-strukturierten Snowflake-Datentypen. zu simulieren.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
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;
$$;
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;
$$;
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;
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;
$$;
Best Practices¶
Behandle die Spaltenaktualisierung in der
UPDATE/DELETE-Abfrage; für mehr Details siehe SSC-EWI-OR0136.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
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;
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);
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);
Best Practices¶
Einige Informationen, die von den integrierten Oracle-Ansichten bereitgestellt werden, finden Sie im Snowflake-Informationsschema or using SHOW command.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
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;
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;
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;
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;
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;
$$;
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 |
|---|---|
|
Kann emuliert werden |
|
Kann emuliert werden |
|
Nicht unterstützt |
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE PROCEDURE cursor_attributes_proc
IS
is_open_attr BOOLEAN;
found_attr BOOLEAN;
my_record table1%ROWTYPE;
CURSOR my_cursor IS SELECT * FROM table1;
BEGIN
OPEN my_cursor;
LOOP
FETCH my_cursor INTO my_record;
EXIT WHEN my_cursor%NOTFOUND;
is_open_attr := my_cursor%ISOPEN;
found_attr := my_cursor%FOUND;
END LOOP;
CLOSE my_cursor;
END;
Generierter Code:¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "table1" **
CREATE OR REPLACE PROCEDURE cursor_attributes_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 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;
$$;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
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;
$$;
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;
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;
$$;
Zugehörige EWI-Meldung¶
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';
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';
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
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;
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;
$$;
Zugehörige EWI-Meldung¶
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.
SSC-PRF-0004: Diese Anweisung kann den Cursor für einen Loop verwenden.
SSC-EWI-OR0110: Die „For Update“-Klausel wird in Snowflake nicht unterstützt.
Best Practices¶
Formulieren Sie die Abfrage neu als normale
UPDATE- oderDELETE-Funktion und geben Sie die Spalten in derWHERE-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;
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;
$$;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.