SnowConvert: Oracle-Probleme¶
SSC-EWI-OR0001¶
Beschreibung¶
Dieser Fehler tritt auf, wenn der Wert in der START WITH
-Anweisung auf LIMIT VALUE
gesetzt ist.
In Oracle wird diese Klausel nur mit der ALTER TABLE-Anweisung verwendet.
Die Option START WITH LIMIT VALUE
, die nur für identity_options
verfügbar ist, kann nur mit dem Befehl ALTER TABLE MODIFY
verwendet werden. Wenn Sie START WITH LIMIT VALUE
verwenden, wird Oracle Database:
Die Tabelle sperren
Eines der folgenden Werte suchen:
Den maximalen Identitätsspaltenwert (für zunehmende Sequenzen)
Den minimalen Identitätsspaltenwert (für abnehmende Sequenzen)
Diesen Wert als High Water Mark des Sequenzgenerators festlegen
Den nächsten Sequenzwert berechnen durch:
Für zunehmende Sequenzen: High Water Mark +
INCREMENT BY integer
Für abnehmende Sequenzen: High Water Mark -
INCREMENT BY integer
ALTER TABLE ORACLE¶
Beispielcode¶
Eingabecode:¶
CREATE SEQUENCE SEQUENCE1
START WITH LIMIT VALUE;
Ausgabecode:¶
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"}}';
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0050¶
Schweregrad¶
Medium
Beschreibung¶
Dieser Fehler tritt auf, wenn Sie versuchen, einen Wert umzuwandeln, der den zulässigen Bereich überschreitet. Das bedeutet, dass der Präzisionswert in Snowflake nicht unterstützt wird. Daher wird der Code auskommentiert und diese Meldung 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;
Ausgabecode:¶
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;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0110¶
Teile des Codes wurden entfernt, um ihn leichter verständlich zu machen.
Schweregrad ¶
Hoch
Beschreibung ¶
Es gibt keine direkte Entsprechung für die FOR UPDATE
-Klausel in der Skriptsprache Snowflake Scripting. Das Tool fügt eine EWI-Meldung (Error, Warning, Information) hinzu und kommentiert diese Klausel während der Konvertierung aus.
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;
Ausgabecode:¶
CREATE OR REPLACE PROCEDURE for_update_clause ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
update_record OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
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;
$$;
Empfehlungen¶
Behandlung von Spaltenaktualisierungen in
UPDATE/DELETE
-Abfragen. Weitere Informationen finden Sie unter dem Fehlercode SSC-EWI-0075.Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0035¶
Teile des Ausgabecodes wurden entfernt, um ihn leichter verständlich zu machen.
Schweregrad¶
Medium
Beschreibung¶
Die Funktion TABLE kann in Snowflake nicht verwendet werden, wenn Sie versuchen, eine Sammlung von Ausdrücken zu erstellen. Diese Funktion wird derzeit nicht unterstützt.
Beispielcode¶
Eingabecode:¶
SELECT
TABLE2.COLUMN_VALUES
FROM TABLE1 i, TABLE(i.groups) TABLE2;
Ausgabecode:¶
// SnowConvert 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;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0097¶
Schweregrad¶
Niedrig
Beschreibung¶
Die zusätzlichen Eigenschaften von Oracle in CREATE PROCEDURE
-Anweisungen werden in der CREATE PROCEDURE
-Syntax von Snowflake nicht unterstützt und können bei der Migration getrost weggelassen werden.
Beispielcode¶
Oracle-Eingabecode:¶
CREATE OR REPLACE PROCEDURE PROC01
DEFAULT COLLATION USING_NLS_COMP
AUTHID CURRENT_USER
ACCESSIBLE BY (PROCEDURE PROC03)
AS
BEGIN
NULL;
END;
Ausgabecode:¶
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;
$$;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0087¶
Schweregrad¶
Niedrig
Teile des Codes wurden weggelassen, um das Beispiel klar und übersichtlich zu halten.
Beschreibung¶
Dieser Fehler tritt auf, wenn es ein Problem bei der Konvertierung der Outer-Join-Syntax von Oracle mit dem (+) Operator zu ANSI JOIN-Klauseln gibt. Dies ist insbesondere dann der Fall, wenn die ursprüngliche Abfrage zirkuläre Tabellenreferenzen in der WHERE-Klausel enthält, bei denen Tabellen in einem zyklischen Muster verknüpft werden.
Wenn diese EWI-Meldung (Error, Warning, Information) erscheint, könnten JOIN-Vorgänge fehlschlagen, weil sie nicht in der richtigen Reihenfolge durchgeführt werden.
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;
Ausgabecode:¶
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;
Vergewissern Sie sich, dass Ihre Abfrage syntaktisch korrekt ist, und stellen Sie sicher, dass Sie Tabellen nicht unnötigerweise mit sich selbst verknüpfen.
Wenn das Problem weiterhin besteht, geben Sie den Tabellennamen für jede Spalte in der WHERE-Klausel an (verwenden Sie z. B.
table1.column_name
statt nurcolumn_name
).Wenn Sie weitere Hilfe benötigen, wenden Sie sich an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0100¶
Schweregrad¶
Niedrig
Beschreibung¶
FOR LOOP
von Oracle kann mehrere Bedingungen enthalten, aber FOR LOOP
von Snowflake Scripting unterstützt nur eine einzige Bedingung. Bei der Konvertierung von Oracle zu Snowflake wird nur die erste Bedingung migriert, alle weiteren Bedingungen werden ignoriert.
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE PROCEDURE P3
AS
BEGIN
FOR i IN REVERSE 1..3,
REVERSE i+5..i+7
LOOP
NULL;
END LOOP;
END;
Ausgabecode:¶
CREATE OR REPLACE PROCEDURE P3 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0100 - FOR LOOP WITH MULTIPLE CONDITIONS IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN REVERSE 1 TO 3 LOOP
NULL;
END LOOP;
END;
$$;
Empfehlungen¶
Zerlegen Sie komplexe
FOR LOOP
-Anweisungen in mehrere einfachere Schleifen, oder schreiben Sie die Schleifenbedingung neu, um sie klarer zu machen.Wenn Sie weitere Hilfe benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0011¶
Schweregrad¶
Medium
Beschreibung¶
Die Cast-Funktion in Snowflake unterstützt den format-Parameter nicht, wenn Sie MONTH oder DAY innerhalb des DATE- oder TIMESTAMP-Formats verwenden.
"MONTH/DD/YYYY" or "MM/DAY/YY" ...
Wenn Sie die CAST-Funktion mit dem Datentyp NUMBER in Snowflake verwenden, müssen Sie vier Argumente angeben, um die Dezimalwerte korrekt anzuzeigen. Derzeit stellt der Ausgabecode nicht alle erforderlichen Argumente für die Funktion TO_NUMBER bereit. Sie müssen die fehlenden Argumente manuell hinzufügen, um eine korrekte Dezimalformatierung zu gewährleisten.
Beispielcode¶
Eingabecode:¶
SELECT CAST('12.48' AS NUMBER, '99.99') FROM DUAL;
Ausgabecode:¶
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;
Ausgabecode:¶
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;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0031¶
Schweregrad¶
Niedrig
Beschreibung¶
Dieser Fehler tritt auf, wenn Sie einen nicht unterstützten Parameter in der Funktion SYS_CONTEXT verwenden. Snowflake bietet ähnliche Kontextfunktionen, die Sie stattdessen verwenden können. Weitere Informationen über unterstützte Kontextfunktionen finden Sie in der Snowflake-Dokumentation.
Beispielcode¶
Eingabecode:¶
SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Ausgabecode:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0031 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE ***/!!!
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Empfehlungen¶
Die Funktion wird in eine UDF-Vorlage (User-Defined Function) konvertiert, die Sie anpassen können, um das Verhalten des Parameters SYS_CONTEXT zu replizieren.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0005¶
Diese EWI-Meldung (Error, Warning, Information) ist nicht mehr in Gebrauch. Die aktuelle Dokumentation finden Sie unter SSC-FDM-OR0043.
Schweregrad¶
Niedrig
Beschreibung¶
Dieser Fehler tritt auf, wenn Sie eine TO_CLOB-Funktion in TO_VARCHAR konvertieren. Wenn Sie mit dem BFILE- oder BLOB-Parameter arbeiten, müssen Sie eventuell einen format-Parameter für die richtige Konvertierung angeben.
Beispielcode¶
Eingabecode:¶
SELECT TO_CLOB('Lorem ipsum dolor sit amet') FROM DUAL;
Ausgabecode:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0005 - BFILE/BLOB PARAMETERS ARE CONSIDERED BINARY, FORMAT MAY BE NEEDED ***/!!!
TO_VARCHAR('Lorem ipsum dolor sit amet')
FROM DUAL;
Empfehlungen¶
Überprüfen Sie, ob die Ausgabeergebnisse zwischen dem Quellcode und dem konvertierten Code übereinstimmen. Fügen Sie bei Bedarf einen format-Parameter hinzu.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0104¶
Schweregrad¶
Hoch
Beschreibung¶
Oracle-Sammlungen werden derzeit nicht von SnowConvert unterstützt. Alle Variablen, die Sammlungstypen und ihre zugehörigen Operationen verwenden, werden im konvertierten Code auskommentiert.
Generieren Sie Prozeduren und Makros in JavaScript, indem Sie entweder das -t JavaScript
-Flag oder die --PLTargetLanguage JavaScript
-Option zu Ihrem Befehl hinzufügen.
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 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;
$$;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0070¶
Schweregrad¶
Medium
Teile des Codes wurden entfernt, um das Beispiel übersichtlicher und leichter verständlich zu machen.
Beschreibung¶
Eine binäre Operation kann nicht direkt konvertiert werden. Um dieses Problem zu lösen, haben wir eine benutzerdefinierte Funktion 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;
Empfehlungen¶
Endbenutzer müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0030¶
Schweregrad¶
Medium
Beschreibung¶
Der Fehler zeigt an, dass die KEEP FIRST- oder KEEP LAST-Klausel, mit der Sie bei Verwendung von Aggregatfunktionen nur den ersten oder letzten Wert auswählen können, derzeit nicht unterstützt wird.
Beispielcode¶
Eingabecode:¶
SELECT
department_id,
MIN(salary) KEEP (
DENSE_RANK FIRST
ORDER BY
commission_pct
) "Worst"
FROM
employees;
Ausgabecode:¶
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;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0121¶
Schweregrad¶
Medium
Beschreibung¶
Wenn Sie BFILE-Oracle-Spalten nach Snowflake migrieren, werden diese in VARCHAR-Spalten konvertiert, die den Dateinamen als Zeichenfolge speichern. Das bedeutet, dass die Verwendung der SUBSTR-Funktion in Snowflake für diese migrierten Spalten auf den Dateinamen selbst und nicht auf den Dateiinhalt angewendet wird. Dies unterscheidet sich von der DBMS_LOB.SUBSTR-Funktion von Oracle, die auf den tatsächlichen Inhalt der Datei angewendet wird. Weitere Einzelheiten finden Sie unter BFILE data type.
Beispielcode¶
Eingabecode:¶
CREATE TABLE table1
(
bfile_column BFILE
)
SELECT
DBMS_LOB.SUBSTR(bfile_column, 15, 1)
FROM table1;
Ausgabecode:¶
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;
Empfehlungen¶
Wie Sie mit Dateien in Snowflake umgehen, erfahren Sie in der Dokumentation hier.
Wenn Sie weitere Hilfe benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0092¶
Schweregrad¶
Niedrig
Beschreibung¶
Diese Meldung wird angezeigt, wenn Sie versuchen, eine negative Dezimalstellenzahl mit einem NUMBER-Datentyp zu Rundungszwecken zu verwenden. Da Snowflake keine negativen Dezimalstellenzahl unterstützt, wurde der scale-Parameter aus der Konvertierung entfernt.
Beispielcode¶
Oracle-Eingabecode:¶
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;
COL1|COL2|COL3|
-+-+-+
555| 560| 600|
Ausgabecode:¶
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;
|COL1|COL2|COL3|
|-|-|-|
|555 |555 |555 |
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0004¶
Teile des Codes wurden entfernt, um das Beispiel übersichtlicher und leichter verständlich zu machen.
Beschreibung¶
Diese Warnung erscheint, wenn eine SELECT-Anweisung eine Klause enthält, die von Snowflake nicht unterstützt wird. Die folgenden Klauseln werden in Snowflake nicht unterstützt:
Containerobjekte, die Daten speichern
Hierarchische Datenstrukturen zur Organisation von Informationen
Externe Änderungen an Datenquellen
Datenpartitionen oder -segmente
Beispielcode¶
Eingabecode:¶
SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
Ausgabecode:¶
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);
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0014¶
Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.
Schweregrad¶
Medium
Beschreibung¶
Die NLSSORT-Funktion kann zurzeit nicht innerhalb der SELECT-Anweisung verwendet werden.
Beispielcode¶
Eingabecode:¶
SELECT NLSSORT(name, 'NLS_SORT = ENGLISH') FROM products;
Ausgabecode:¶
// SnowConvert Helpers Code section is omitted.
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0014 - FUNCTION NLSSORT IS NOT SUPPORTED ***/!!!
NLSSORT(name, 'NLS_SORT = ENGLISH') FROM
products;
Empfehlungen¶
NLSSORT wird in eine benutzerdefinierte (UDF/Stub)-Funktion transformiert, die Sie anpassen können, um ihr Verhalten zu replizieren.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0105¶
Schweregrad¶
Niedrig
Beschreibung¶
Der Datentyp BFILE
wird bei der Migration in VARCHAR
konvertiert. Diese Konvertierung ermöglicht die Speicherung des Dateipfads und -namens. Beachten Sie, dass die in Oracle integrierten Funktionen zur Verarbeitung von BFILE-Typen derzeit nicht unterstützt werden. Weitere Einzelheiten zum Umgang mit Dateipfaden und -namen finden Sie in der Dokumentation zu BFILENAME_UDF
.
Die BUILD_STAGE_FILE_URL
-Funktion bietet eine sichere Möglichkeit, auf Dateien zuzugreifen, die in Snowflake-Stagingbereichen gespeichert sind. Bei ihrem Aufruf generiert sie eine URL, die eine bestimmte Datei in einem Stagingbereich referenziert. Weitere Einzelheiten finden Sie in der Funktionsdokumentation hier.
Beispielcode¶
Oracle-Eingabecode:¶
CREATE TABLE bfiletable ( bfile_column BFILE );
INSERT INTO bfiletable VALUES ( BFILENAME('mydirectory', 'myfile.png') );
Ausgabecode:¶
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') );
Empfehlungen¶
Verwenden Sie die
BUILD_STAGE_FILE_URL
-Funktion und andere Dateifunktionen zur Verwaltung und Bearbeitung von Dateien in Snowflake.
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') );
URL |
+
https://thecompany.snowflakecomputing.com/api/files/CODETEST/PUBLIC/MY_STAGE/%2Fmydirectory%2Fmyfile.jpg|
Diese Funktion ist mit verschiedenen Anbietern von Cloud-Speichern kompatibel. Informationen zur Verwendung von Dateien aus Ihrem lokalen System mit Stagingbereichen finden Sie in dieser Dokumentation.
Konvertieren Sie den Datentyp in einen Datentyp, der mit dem Zielsystem kompatibel ist.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0045¶
Schweregrad¶
Medium
Beschreibung¶
Diese Meldung erscheint, wenn Sie versuchen, die Umwandlung in das FML- oder L-Format zu verwenden; diese ist in Snowflake nicht verfügbar. In solchen Fällen wird der Code auskommentiert und diese Warnmeldung wird angezeigt.
Beispielcode:¶
Eingabecode:¶
SELECT CAST(' $123.45' as number, 'L999.99') FROM DUAL;
SELECT CAST('$123.45' as number, 'FML999.99') FROM DUAL;
Ausgabecode:¶
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;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0082¶
Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.
Schweregrad¶
Medium
Beschreibung¶
Dieser Fehler tritt auf, wenn eine Abfrage versucht, auf ein Attribut innerhalb einer Spalte zuzugreifen, die als benutzerdefinierter Typ definiert wurde. Eine automatische Konvertierung ist zwar nicht möglich, aber Sie können diese Abfragen problemlos manuell konvertieren.
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;
Ausgabecode:¶
!!!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":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
CREATE OR REPLACE VIEW PUBLIC.my_table_view
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "" }}'
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
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0082 - CANNOT CONVERT NESTED TYPE ATTRIBUTE EXPRESSION ***/!!! column1.property1.attribute1,
column1.property2
FROM
my_table;
Empfehlungen¶
Um den Code manuell zu korrigieren, ersetzen Sie den Operator „.“ (Punkt) durch „:“ (Doppelpunkt), wenn Sie auf Typspalten zugreifen.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0071¶
Schweregrad¶
Niedrig
Beschreibung¶
Die Verwendung des Quantifizierers „all“ wird in Snowflake nicht unterstützt. Bei der Konvertierung Ihres Codes wird dieser Modifikator entfernt, und es wird eine Warnmeldung ausgegeben. Bitte beachten Sie, dass diese Änderung zu unerwartetem Verhalten in Ihrem Code führen kann.
Beispielcode¶
Eingabecode:¶
SELECT location_id FROM locations
MINUS ALL
SELECT location_id FROM departments;
Ausgabecode:¶
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 Operatoren INTERSECT und MINUS/EXCEPT automatisch doppelte Werte aus dem Resultset.
Empfehlungen¶
Prüfen Sie alternative Methoden in Snowflake, um die Funktionalität des Quantifizierers „all“ zu replizieren. Hier erfahren Sie, wie Sie die Beschränkungen von MINUS ALL
und EXCEPT ALL
umgehen können.
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 zusätzliche Unterstützung benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0020¶
Schweregrad¶
Moderat
Beschreibung¶
Die Snowflake-Implementierung dieser Funktion akzeptiert keine negativen Werte, was bei der Ausführung zu einem anderen Verhalten als in der Quelldatenbank führt.
Beispielcode¶
Eingabecode:¶
SELECT INSTR('CORPORATE FLOOR','OR', -3, 2) FROM DUAL;
Ausgabecode:¶
SELECT
REGEXP_INSTR('CORPORATE FLOOR','OR', -3, 2) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0020 - NEGATIVE VALUES NOT SUPPORTED FOR FUNCTION ***/!!! FROM DUAL;
Empfehlungen¶
Erstellen Sie eine benutzerdefinierte Funktion (UDF), die negative Werte als Eingabeparameter verarbeiten kann, oder untersuchen Sie alternative Lösungen.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0051¶
Schweregrad¶
Niedrig
Beschreibung¶
Diese Warnung erscheint, wenn eine PRAGMA EXCEPTION_INIT-Funktion innerhalb einer Prozedur verwendet wird. Im ursprünglichen Code werden die Namen der Ausnahmen und der SQL-Code mit der Funktion RAISE definiert. Bei der Konvertierung in Snowflake Scripting wird dieser SQL-Code in die Ausnahmedeklaration aufgenommen. Einige dieser SQL-Codewerte sind jedoch möglicherweise nicht mit Snowflake Scripting kompatibel.
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;
/
Ausgabecode:¶
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;
$$;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0075¶
Schweregrad¶
Medium
Teile des Codes wurden entfernt, um das Beispiel übersichtlicher und leichter verständlich zu machen.
Erzeugen Sie Prozeduren und Makros in JavaScript, indem Sie entweder das Flag -t JavaScript
oder --PLTargetLanguage JavaScript
zu Ihrem Befehl hinzufügen.
Beschreibung¶
Labels in Codeblöcken können nicht als Referenzen in Anweisungen verwendet werden.
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:¶
--** 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":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
/* ** SSC-EWI-OR0075 - LABELS IN STATEMENTS ARE NOT SUPPORTED. ** */
/* -- procedure body
EXIT loop_b */
// procedure body
;
// procedure body continuation
;
$$;
Empfehlungen¶
Endbenutzer müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0135¶
Schweregrad¶
Niedrig
Beschreibung¶
Wenn Sie eine Time Travel-Abfrage in Snowflake ausführen, erhalten Sie möglicherweise keine Ergebnisse, wenn Sie einen Zeitpunkt angeben, der außerhalb der Datenaufbewahrungsfrist liegt. Weitere Informationen finden Sie unter Verstehen und Verwenden von Time Travel.
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';
Ausgabecode¶
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';
Empfehlungen¶
Wenn Sie zusätzliche Unterstützung benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0101¶
Schweregrad¶
Niedrig
Beschreibung¶
FOR LOOP
von Oracle unterstützt zusätzliche Klauseln, die in Snowflake Scripting nicht verfügbar sind. Dazu zählen:
BY-Klausel: Steuert die Schrittgröße des Schleifenzählers
WHILE-Klausel: Fügt eine boolesche Bedingung hinzu, um die Schleife fortzusetzen
WHEN-Klausel: Fügt eine boolesche Bedingung hinzu, um die Schleife fortzusetzen
Bei der Umwandlung von Oracle-Code in Snowflake werden diese Klauseln ignoriert, da sie in Snowflake Scripting nicht unterstützt werden.
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;
Ausgabecode:¶
CREATE OR REPLACE PROCEDURE P2 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "WHILE" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN 1 TO 10 LOOP
NULL;
END LOOP;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0101 - FOR LOOP WITH "BY" CLAUSE IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN 5 TO 15 LOOP
NULL;
END LOOP;
END;
$$;
Empfehlungen¶
Zerlegen Sie komplexe
FOR LOOP
-Anweisungen in mehrere einfachere Schleifen, oder schreiben Sie die Schleifenbedingung neu, um sie klarer zu machen.Wenn Sie weitere Hilfe benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0010¶
Teile des Codes wurden entfernt, um das Beispiel übersichtlicher und leichter verständlich zu machen.
Schweregrad¶
Kritisch
Beschreibung¶
Diese Warnung erscheint, wenn die Klauseln PARTITION
und SUBPARTITION
in einer Abfrage verwendet werden. Snowflake verwaltet die Datenpartitionierung automatisch, sodass diese Klauseln nicht erforderlich sind.
Beispielcode¶
Eingabecode:¶
SELECT * FROM table1 PARTITION(col1);
Ausgabecode:¶
SELECT * FROM
table1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0010 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE. IT REQUIRES MANUAL FIX ***/!!!
PARTITION(col1);
Empfehlungen¶
Um eine ähnliche Funktionalität in Snowflake zu erreichen, müssen Sie manuell eine
WHERE
-Klausel hinzufügen, um bestimmte Partitionszeilen zu filtern. Beachten Sie, dass diese Problemumgehung die Abfrageleistung beeinträchtigen kann.Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0099¶
Schweregrad¶
Niedrig
Beschreibung¶
Dieser Fehler tritt auf, wenn die Nummer der Ausnahmedeklaration außerhalb des zulässigen Bereichs für Snowflake Scripting liegt. Die Nummern von Ausnahmen müssen Ganzzahlen 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;
Ausgabecode:¶
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;
$$;
Empfehlungen¶
Stellen Sie sicher, dass Ihr Ausnahmecode innerhalb des von Snowflake Scripting erlaubten Bereichs liegt. Wenn dies nicht der Fall ist, verwenden Sie eine andere verfügbare Ausnahmenummer.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-EWI-OR0089¶
Diese EWI-Meldung (Error, Warning, Information) ist nicht mehr in Gebrauch. Die aktuelle Dokumentation finden Sie unter SSC-FDM-OR0044.
Schweregrad¶
Niedrig
Beschreibung¶
Diese Warnung erscheint, wenn Sie die Funktion REGEXP_LIKE
von Oracle mit einem Abgleichparameter (dritter Parameter) verwenden. Die Warnung weist darauf hin, dass die Funktion REGEXP_LIKE_UDF
in Snowflake, die die Funktion REGEXP_LIKE
von Oracle ersetzt, möglicherweise nicht alle Zeichen des Abgleichparameters unterstützt. Infolgedessen kann die Ausgabe der Abfrage in Snowflake von der in Oracle abweichen.
Beispielcode¶
Oracle-Eingabecode:¶
SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i')
ORDER BY last_name;
Ausgabecode:¶
SELECT last_name
FROM
hr.employees
WHERE
!!!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 Ihre
REGEXP_LIKE
-Bedingung nicht unterstützte Zeichen in der benutzerdefinierten Funktion enthält, sollten Sie den regulären Ausdruck so ändern, dass das gleiche Suchverhalten ohne diese Zeichen erreicht wird. Einzelheiten zu nicht unterstützten Zeichen finden Sie in der Dokumentation zu REGEXP_LIKE_UDF.Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0128¶
Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.
Schweregrad¶
Niedrig
Beschreibung¶
Diese Meldung zeigt an, dass ein boolesches cursor-Attribut in SnowScript nicht verwendet werden kann, entweder weil es nicht unterstützt wird oder weil es keine gleichwertige Funktionalität gibt. In der folgenden Tabelle sind die booleschen cursor-Attribute aufgeführt, die in SnowScript repliziert werden können:
| Boolean Cursor Attribute | Status | | | - | | %FOUND
| Kann emuliert werden | | %NOTFOUND
| Can be emulated | | %ISOPEN
| Wird nicht unterstützt |
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE PROCEDURE cursor_attributes_proc
IS
is_open_attr BOOLEAN;
found_attr BOOLEAN;
my_record table1%ROWTYPE;
CURSOR my_cursor IS SELECT * FROM table1;
BEGIN
OPEN my_cursor;
LOOP
FETCH my_cursor INTO my_record;
EXIT WHEN my_cursor%NOTFOUND;
is_open_attr := my_cursor%ISOPEN;
found_attr := my_cursor%FOUND;
END LOOP;
CLOSE my_cursor;
END;
Ausgabecode:¶
CREATE OR REPLACE PROCEDURE cursor_attributes_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
is_open_attr BOOLEAN;
found_attr BOOLEAN;
my_record OBJECT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWTYPE DATA TYPE CONVERTED TO OBJECT ***/!!! := OBJECT_CONSTRUCT();
my_cursor CURSOR
FOR
SELECT
OBJECT_CONSTRUCT( *) sc_cursor_record FROM
table1;
BEGIN
OPEN my_cursor;
LOOP
--** SSC-PRF-0003 - FETCH INSIDE A LOOP IS CONSIDERED A COMPLEX PATTERN, THIS COULD DEGRADE SNOWFLAKE PERFORMANCE. **
FETCH my_cursor INTO
:my_record;
IF (my_record IS NULL) THEN
EXIT;
END IF;
is_open_attr := null /*my_cursor%ISOPEN*/!!!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;
$$;
Empfehlungen¶
Wenn Sie zusätzliche Unterstützung benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0068¶
Schweregrad¶
Medium
Beschreibung¶
Dieser Fehler tritt auf, wenn der Wert von START WITH
größer ist als der maximal zulässige Wert von Snowflake. Laut der Snowflake-Dokumentation muss der Startwert der Sequenz im Bereich einer 64-Bit-Zweierkomplement-Ganzzahl liegen: von -2^63
bis 2^63-1
. Die maximal zulässigen Werte sind insbesondere:
Positive Zahlen: 9223372036854775807
Negative Zahlen: 9223372036854775808
Beispielcode¶
Eingabecode:¶
CREATE SEQUENCE SEQUENCE1
START WITH 9223372036854775808;
CREATE SEQUENCE SEQUENCE2
START WITH -9223372036854775809;
Ausgabecode:¶
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"}}';
Empfehlungen¶
Wir empfehlen, die Sequenz zurückzusetzen und ihre Verwendung anzupassen. NOTE: Vergewissern Sie sich, dass die Zielspalte über genügend Kapazität verfügt, um diesen Wert zu speichern.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0039¶
Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.
Schweregrad¶
Niedrig
Beschreibung¶
Diese Meldung erscheint, wenn SnowConvert eine Abfrage erkennt, die eine NOCYCLE-Klausel enthält, die derzeit in Snowflake nicht unterstützt wird.
Diese Anweisung zeigt an, wenn eine rekursive Operation stattfindet.
Weitere Informationen über die Funktionalität der Klausel finden Sie in der Dokumentation.
Beispielcode¶
CONNECT BY¶
Eingabecode:¶
CREATE OR REPLACE FORCE NONEDITIONABLE VIEW VIEW01 AS
SELECT
UNIQUE A.*
FROM
TABLITA A
WHERE
A.X = A.C CONNECT BY NOCYCLE A.C = 0 START WITH A.B = 1
HAVING
X = 1
GROUP BY
A.C;
Ausgabecode:¶
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;
Empfehlungen¶
Wenn Ihre Datenhierarchie Zyklen enthält, lesen Sie bitte diesen Artikel, um zu erfahren, wie Sie damit umgehen.
Wenn Sie weitere Hilfe benötigen, wenden Sie sich an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0029¶
Beschreibung¶
Snowflake unterstützt das Feature „DEFAULT ON CONVERSION ERROR“ nicht.
Beispielcode¶
Eingabecode:¶
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
Ausgabecode:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0029 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE ***/!!! TO_NUMBER('2,00') "Value" FROM DUAL;
Empfehlungen¶
Ziehen Sie in Erwägung, eine benutzerdefinierte Funktion (User-Defined Function, UDF) zu erstellen, um die Funktionalität des
DEFAULT
-Werts bei der Behandlung vonON CONVERSION ERROR
zu replizieren.Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0078¶
Schweregrad¶
Medium
Beschreibung¶
SnowConvert war nicht in der Lage, die dynamische Anweisung SQL innerhalb des EXECUTE IMMEDIATE-Befehls zu analysieren.
Generieren Sie Prozeduren und Makros in JavaScript, indem Sie entweder das -t JavaScript
-Flag oder die --PLTargetLanguage JavaScript
-Option zu Ihrem Befehl hinzufügen.
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 Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0078 - UNABLE TO PARSE DYNAMIC SQL STATEMENT ***/!!!
/*EXEC(`NOT A VALID SQL STATEMENT`)*/
;
$$;
Empfehlungen¶
Vergewissern Sie sich, dass Ihre dynamische SQL-Anweisung die richtige Syntax hat.
Überprüfen Sie in der Dokumentation zu SnowConvert, ob Ihre Aussage unterstützt wird.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-EWI-OR0118¶
Schweregrad¶
Medium
Beschreibung¶
Oracle enthält integrierte Ansichten und Tabellen, die Snowflake nicht unterstützt. Wenn diese Elemente in Abfragen oder Anweisungen verwendet werden, erzeugt SnowConvert eine Fehlermeldung.
Beispielcode¶
Eingabecode:¶
SELECT * FROM ALL_COL_COMMENTS;
SELECT * FROM (SELECT * FROM ALL_COL_COMMENTS);
Ausgabecode:¶
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);
Empfehlungen¶
Informationen, die typischerweise in integrierten Oracle-Ansichten zu finden sind, stehen in Snowflake entweder über das Information Schema oder über den Befehl SHOW zur Verfügung.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0009¶
Schweregrad¶
Hoch
Beschreibung¶
Die Funktion JSON_TABLE wird in dieser Version derzeit 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;
Ausgabecode:¶
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;
Empfehlungen¶
Verwenden Sie die FLATTEN-Funktion von Snowflake als Alternative zur JSON_TABLE-Funktionalität.
Wenn Sie weitere Hilfe benötigen, wenden Sie sich an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0108¶
Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.
Schweregrad¶
Medium
Beschreibung¶
Oracle-Variablentypen wie Cursor, Sammlungen, Datensätze und benutzerdefinierte Typen können nicht direkt in Snowflake konvertiert werden. Außerdem unterstützt Snow Scripting derzeit nicht die Transformation von Platzhaltern, Objekten und Ausgabeparametern.
Die Konvertierung dieser Variablen in semistrukturierte Datentypen von Snowflake kann in bestimmten Fällen eine Lösung sein.
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;
Ausgabecode:¶
CREATE OR REPLACE PROCEDURE pinvalidassign (out_parameter NUMBER(38, 18))
RETURNS VARIANT
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
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;
RETURN out_parameter;
END;
$$;
Empfehlungen¶
Erwägen Sie eine Änderung des Variablendatentyps, oder verwenden Sie die semistrukturierten Datentypen von Snowflake, um das gewünschte Verhalten zu replizieren.
Wenn Sie weitere Hilfe benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0008¶
Schweregrad¶
Niedrig
Beschreibung¶
Dieser Fehler tritt auf, wenn das System auf Datumsformate stößt, die nicht erkannt werden, was zu unerwarteten Ergebnissen führen kann.
Beispielcode¶
Eingabecode:¶
SELECT TO_CHAR(DATE '1998-12-25','iw-iyyy') FROM DUAL;
Ausgabecode:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0008 - UNKNOWN FORMAT, MAY HAVE UNEXPECTED BEHAVIOR ***/!!!
TO_CHAR(DATE '1998-12-25','iw-iyyy'') FROM DUAL;
Hinweis: Das Datumsformat „iw-iyyy“ wird nicht unterstützt.
Empfehlungen¶
Eine Liste der unterstützten Zeitstempelformate finden Sie in der Dokumentation.
Wenn Sie weitere Hilfe benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0109¶
Schweregrad¶
Medium
Beschreibung¶
Snowflake Scripting unterstützt nicht die Verwendung von Ausdrücken als Argumente in der USING-Klausel von EXECUTE IMMEDIATE-Anweisungen, im Gegensatz zu Oracle, wo diese Funktionalität verfügbar ist.
Snowflake Scripting unterstützt Variablenausdrücke. Sie können einen Ausdruck ersetzen, indem Sie ihn manuell einer Variablen zuweisen, wie im folgenden Beispiel gezeigt.
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;
Ausgabecode:¶
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:¶
Um den Kompilierungsfehler zu beheben und dabei die gleichen Ergebnisse wie bei Oracle zu erhalten, verwenden Sie die oben beschriebene Prozedur.
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;
$$;
Empfehlungen¶
Um Prozeduren manuell zu migrieren, erstellen Sie eine Variable und weisen ihr den Ausdruck zu.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0049¶
Schweregrad¶
Kritisch
Teile des Codes wurden weggelassen, um das Beispiel klar und übersichtlich zu halten.
Beschreibung¶
Diese Warnung erscheint, wenn Sie versuchen, ein nicht unterstütztes Element eines zustandsabhängigen Pakets zu verwenden.
Dieses Feature wird in einer zukünftigen Version verfügbar sein.
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE PACKAGE MY_PACKAGE
AS
TYPE COLLECTIONTYPEDEFINITION IS TABLE OF BULKCOLLECTTABLE%ROWTYPE;
END;
Ausgabecode:¶
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;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0129¶
Schweregrad¶
Niedrig
Teile der Codeausgabe wurden entfernt, um das Beispiel übersichtlicher zu gestalten.
Beschreibung¶
Diese Warnung erscheint, wenn das System den Datentyp eines Artikels nicht bestimmen kann, weil das referenzierte TYPE
-Attribut nicht gefunden werden kann. In solchen Fällen weist das System dem Element automatisch den Datentyp VARIANT
zu.
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE PROCEDURE procedure01
IS
var1 table01.col1%TYPE;
BEGIN
NULL;
END;
Ausgabecode:¶
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;
$$;
Empfehlungen¶
Überprüfen Sie manuell den Datentyp des referenzierten Elements, und aktualisieren Sie das TYPE-Attribut im referenzierten Element entsprechend.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0069¶
Schweregrad¶
Medium
Beschreibung¶
Snowflake unterstützt nicht die CURRVAL-Eigenschaft für Sequenzen.
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;
Empfehlungen¶
Hinweise zur Handhabung von Szenarien, die die CURRVAL-Eigenschaft beinhalten, finden Sie in der Dokumentation von Snowflake.
Wenn Sie weitere Hilfe benötigen, wenden Sie sich an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0038¶
Schweregrad¶
Niedrig
Beschreibung¶
Die [search_clause
](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SELECT. html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__I2077142) steuert, wie Zeilen in einer SELECT-Anweisung verarbeitet werden, indem sie ihre Reihenfolge festlegt. Mit diesem Feature können Sie zwar festlegen, wie die Daten in Oracle durchsucht und zurückgegeben werden sollen, aber es ist in Snowflake nicht verfügbar.
In Oracle und ähnlichen Datenbanken hilft die [search_clause
](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SELECT. html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__I2077142) zu steuern, wie hierarchische Daten in rekursiven Abfragen oder allgemeinen Tabellenausdrücken (Common Table Expressions, CTEs) verarbeitet werden. Wenn Sie Spalten in der [search_clause
](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SELECT. html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__I2077142) angeben, können Sie zwischen den Durchlaufmethoden depth-first oder breadth-first wählen, die die Reihenfolge der Zeilenverarbeitung bestimmen.
In Snowflake wird eine [search_clause
](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SELECT. html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__I2077142)-Meldung generiert und dann entfernt.
Beispielcode¶
Eingabecode:¶
WITH dup_hiredate(eid, emp_last, mgr_id, reportLevel, hire_date, job_id) AS
(SELECT aValue from atable) SEARCH DEPTH FIRST BY hire_date SET order1 SELECT aValue from atable;
Ausgabecode:¶
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¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0033¶
Schweregrad¶
Medium
Beschreibung¶
PL/SQL-Variablendeklarationen innerhalb von WITH-Klauseln werden derzeit 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;
Ausgabecode:¶
// SnowConvert 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;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0007¶
Beschreibung¶
Diese Meldung erscheint, wenn Sie versuchen, eine CREATE TYPE-Anweisung zu verwenden, die von Snowflake nicht unterstützt wird.
Beispielcode¶
Eingabecode (Oracle):¶
CREATE TYPE type6 UNDER type5(COL1 INTEGER);
Ausgabecode:¶
--!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0116¶
Schweregrad¶
Medium
Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher zu gestalten.
Beschreibung¶
Dieser Fehler tritt auf, wenn Sie versuchen, arithmetische Operationen ausschließlich mit Intervallen durchzuführen. Snowflake unterstützt keine Berechnungen zwischen zwei Intervallwerten.
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;
Ausgabecode:¶
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;
Empfehlungen¶
Wenn das Timing einer Operation Probleme verursacht, können Sie es korrigieren, indem Sie an der entsprechenden Stelle Daten oder Zeitstempel hinzufügen.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0046¶
Diese Warnung ist nicht mehr in Gebrauch. Die aktuelle Dokumentation finden Sie unter SSC-EWI-0109.
Schweregrad¶
Medium
Beschreibung¶
Wenn ein Tabellenänderungsbefehl nicht mit der Syntax von Snowflake kompatibel ist, wird der Code auskommentiert, und diese Benachrichtigung wird als Kommentar 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;
Ausgabecode:¶
!!!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;
Empfehlungen¶
Von Ihrer Seite sind keine weiteren Maßnahmen erforderlich.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0023¶
Schweregrad¶
Hoch
Teile des Codes wurden entfernt, um das Beispiel übersichtlicher und leichter verständlich zu machen.
Beschreibung¶
Dieser Fehler tritt auf, wenn eine Aggregatfunktion verwendet wird.
DENSE_RANK(): Weist jeder Zeile innerhalb einer Partition einen Rang zu, ohne Lücken in der Rangfolge, wenn es Gleichstände gibt
RANK(): Weist jeder Zeile innerhalb einer Partition einen Rang zu, mit Lücken in der Rangfolge, wenn es gleiche Werte gibt
PERCENT_RANK(): Berechnet den relativen Rang einer Zeile innerhalb einer Partition als Prozentwert (0 bis 1)
CUME_DIST(): Berechnet die kumulative Verteilung eines Wertes innerhalb einer Partition (0 bis 1)
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;
Ausgabecode:¶
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;
Empfehlungen¶
Wenn Sie zusätzliche Unterstützung benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0072¶
Schweregrad¶
Medium
Teile des Codes wurden entfernt, um das Beispiel übersichtlicher und leichter verständlich zu machen.
Erzeugen Sie Prozeduren und Makros in JavaScript, indem Sie entweder das Flag -t JavaScript
oder --PLTargetLanguage JavaScript
zu Ihrem Befehl hinzufügen.
Beschreibung¶
Prozedurelemente werden in dieser Version derzeit nicht unterstützt. Hier ein Beispiel dafür, was wir mit Prozedurelementen meinen:
Im Code definierte Konstanten
Datenbankcursor für den Datenabruf
pragma-Anweisungen, die das Verhalten des Compilers steuern
Im Code definierte Variablen
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 Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0072 - PROCEDURAL MEMBER PRAGMA DECLARATION NOT SUPPORTED. ***/!!!
/* PRAGMA AUTONOMOUS_TRANSACTION */
;
null;
$$;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0052¶
Schweregrad¶
Niedrig
Teile der Codeausgabe wurden entfernt, um das Beispiel klar und übersichtlich zu halten.
Generieren Sie Prozeduren und Makros in JavaScript, indem Sie entweder das -t JavaScript
-Flag oder die --PLTargetLanguage JavaScript
-Option zu Ihrem Befehl hinzufügen.
Beschreibung¶
Ausnahmen gibt es sowohl in Oracle als auch in Snowflake. Die Funktion RAISE übernimmt jedoch alle drei Aufgaben: deklarieren, zuweisen und den Fehler auslösen. Aus diesem Grund erscheint die Ausnahmedeklaration als Kommentar und erzeugt eine Warnmeldung.
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;
Ausgabecode:¶
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 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
;
$$;
Für die bessere Lesbarkeit wurden einige Abschnitte des Ausgabecodes weggelassen.
Empfehlungen¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0095¶
Schweregrad¶
Niedrig
Beschreibung¶
Die Datentypen INTERVAL YEAR TO MONTH
und INTERVAL DAY TO SECOND
werden in VARCHAR(20)
konvertiert, da sie nicht unterstützt werden. Infolgedessen können Sie keine arithmetischen Operationen zwischen Datumstypen und Spalten durchführen, die ursprünglich ein Intervalltyp waren.
Wenn Sie außerdem Operationen zwischen einem Intervalltyp und einem Datumstyp (speziell in dieser Reihenfolge) durchführen, unterstützt Snowflake diese Operationen nicht und erzeugt diese EWI-Meldung.
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;
Ausgabecode:¶
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;
Empfehlungen¶
Erstellen Sie eine benutzerdefinierte Funktion (User-Defined Function, UDF), die die Funktionalität von Oracle repliziert.
Verwenden Sie den transformierten Wert, der während der Migration in der Spalte gespeichert wurde, als Snowflake-Intervallkonstante, sofern verfügbar.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
¶
SSC-EWI-OR0126¶
Schweregrad¶
Medium
Beschreibung¶
Dieser Fehler tritt auf, wenn Sie versuchen, ein Objekt zu verwenden, das einen im System integrierten benutzerdefinierten Datentyp hat.
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;
Ausgabecode:¶
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;
$$;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0076¶
Schweregrad¶
Medium
Beschreibung¶
Integrierte Paketübersetzung ist derzeit nicht verfügbar.
Beispielcode¶
Eingabecode (Oracle):¶
SELECT
UTL_RAW.CAST_TO_RAW('some magic here'),
DBMS_UTILITY.GET_TIME
FROM DUAL;
Ausgabecode:¶
SELECT
!!!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;
Empfehlungen¶
Von den Benutzern ist keine Aktion erforderlich.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0136¶
Schweregrad¶
Kritisch
Beschreibung¶
Snowflake unterstützt derzeit nicht die CURRENT OF-Klausel innerhalb der WHERE-Klausel von UPDATE- und DELETE-Anweisungen.
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:¶
CREATE OR REPLACE PROCEDURE proc_update_current_of ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
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: Warnung: Arithmetische Operationen zwischen String- und Datums-Datentypen können zu unerwarteten Ergebnissen führen.
SSC-PRF-0004: Dieser Code enthält cursorbasierte Schleifen, die die Leistung beeinträchtigen können.
SSC-EWI-OR0110: Die FOR UPDATE-Klausel wird derzeit in Snowflake nicht unterstützt.
Empfehlungen¶
Schreiben Sie die Abfrage mit den Standardanweisungen
UPDATE
oderDELETE
neu. Nehmen Sie bestimmte Spaltenbedingungen in dieWHERE
-Klausel auf. Beachten Sie, dass, wenn Ihre Tabelle doppelte Datensätze enthält, die Abfrage sich möglicherweise mehrfach auf diese Datensätze auswirkt.Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0013¶
Schweregrad¶
Medium
Beschreibung¶
Der Parameter NLS (National Language Support) wird derzeit für die folgenden Funktionen nicht unterstützt:
Einen Wert in eine Zeichenfolge konvertieren (TOCHAR)
Einen Wert in ein Datum konvertieren (TODATE)
Einen Wert in eine Zahl konvertieren (TONUMBER)
Einen Wert in einen Zeitstempel konvertieren (TOTIMESTAMP)
Einen Wert in einen bestimmten Datentyp konvertieren (CAST)
Beispielcode¶
Eingabecode:¶
SELECT TO_NUMBER('-AusDollars100','9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''') "Amount" FROM DUAL;
Ausgabecode:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0013 - NLS PARAMETER ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''' NOT SUPPORTED ***/!!!
TO_NUMBER('-AusDollars100','9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''') "Amount" FROM DUAL;
Empfehlungen¶
Die Funktion TO_NUMBER wird in eine benutzerdefinierte Funktion (UDF/Stub) transformiert, sodass Sie ihr Verhalten an Ihre spezifischen Parameteranforderungen anpassen können.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0042¶
Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.
Schweregrad¶
Niedrig
Beschreibung¶
Diese Meldung erscheint, wenn SnowConvert eine Abfrage erkennt, die eine MODEL-Klausel enthält, die derzeit in Snowflake nicht unterstützt wird.
Beispielcode¶
Eingabecode:¶
SELECT
employee_id,
salary
FROM
employees
MODEL
DIMENSION BY (employee_id)
MEASURES (salary)
();
Ausgabecode:¶
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)
();
Empfehlungen¶
Wenn Sie zusätzliche Unterstützung benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0053¶
Schweregrad¶
Medium
Beschreibung¶
Dieser Fehler tritt auf, wenn Sie versuchen, Daten mithilfe eines falschen Eingabeformats umzuwandeln. Daraufhin wird der Code auskommentiert und diese Meldung angezeigt.
Beispielcode:¶
Eingabecode:¶
SELECT CAST('12sdsd3,456E+40' AS NUMBER, '999,999EEE') FROM DUAL;
SELECT CAST('12345sdsd' AS NUMBER, '99999') FROM DUAL;
Ausgabecode:¶
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;
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0002¶
Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.
Schweregrad¶
Hoch
Beschreibung¶
Dieser Fehler tritt auf, wenn das System die Spalten in einem SELECT-Ausdruck nicht auflösen kann. Dies geschieht in der Regel in zwei Szenarien:
Wenn Sie auf einen Typzugriff verweisen, der nicht aufgelöst wurde
Wenn Sie versuchen, auf Spalten eines benutzerdefinierten Typs zuzugreifen, der keine Spaltendefinitionen enthält (z. B. Typ ohne Body oder leerer Objekttyp)
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;
Ausgabecode:¶
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;
$$;
Empfehlungen¶
Überprüfen Sie, ob die referenzierte Typdefinition Spaltendefinitionen enthält.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0036¶
Schweregrad¶
Niedrig
Beschreibung¶
Dieser Fehler tritt auf, wenn zwei inkompatible Datentypen in einer arithmetischen Operation verwendet werden, was zu unerwarteten Ergebnissen führen kann.
Beispielcode¶
Eingabecode:¶
SELECT
SYSDATE,
SYSDATE + '1',
SYSDATE + 'A'
from
dual;
Ausgabecode:¶
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;
Wenn Sie Operationen zwischen den Datentypen String und Date durchführen, sollten Sie sich bewusst sein, dass die Ergebnisse unerwartet oder falsch sein können. Es wird empfohlen, den Typ String in Date zu konvertieren, bevor Sie datumsbezogene Operationen durchführen.
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0067¶
Schweregrad¶
Moderat
Teile des Codes wurden weggelassen, um das Beispiel klar und übersichtlich zu halten.
Beschreibung¶
Snowflake erlaubt es Ihnen nicht, mehrere Einschränkungen in einer einzigen ALTER TABLE-Anweisung zu definieren.
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);
Empfehlungen¶
Endbenutzer müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0026¶
Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.
Schweregrad¶
Medium
Beschreibung¶
Die Anweisung ROWID wird in dieser Version 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;
Empfehlungen¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0103¶
Schweregrad¶
Hoch
Beschreibung¶
Snowflake Scripting bietet im Vergleich zu Oracle nur eine begrenzte Unterstützung für FOR LOOP
-Anweisungen. Während Oracle mehrere Bedingungstypen (wie boolesche Ausdrücke, Sammlungen und Datensätze) unterstützt, erlaubt Snowflake nur FOR LOOP
mit ganzzahligen Bereichen als Grenzen. Alle anderen Schleifenformate werden als nicht unterstützt markiert und müssen manuell konvertiert werden.
Oracle-Iterationssteuerungsklauseln, die von Snowflake-FOR LOOP
nicht unterstützt werden:
single_expression_control
: Wertet einen einzelnen Ausdruck ausvalues_of_control
: Verarbeitet einzelne Werte aus einer Sammlungindices_of_control
: Durchläuft Array-Indizespairs_of_control
: Verarbeitet Schlüssel-Wert-Paare aus einer Sammlung
Das Feature cursor_iteration_control
wird derzeit nicht unterstützt. Sie können es jedoch in CURSOR FOR LOOP konvertieren, indem Sie die Klammern aus dem Ausdruck entfernen.
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;
Ausgabecode:¶
CREATE OR REPLACE PROCEDURE P3 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
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 ***/!!!!!!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 LOOP
NULL;
END LOOP;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0103 - FOR LOOP FORMAT IS CURRENTLY NOT SUPPORTED BY SNOWFLAKE SCRIPTING ***/!!!
FOR i IN VALUES OF :l_employee_values LOOP
NULL;
END LOOP;
END;
$$;
Empfehlungen¶
Ändern Sie die
FOR LOOP
-Bedingung, oder wählen Sie einen anderenLOOP
-Typ, um das gleiche Ergebnis zu erzielen.Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0090¶
Schweregrad¶
Medium
Teile der Codeausgabe wurden entfernt, um sie verständlicher zu machen.
Beschreibung¶
Dieser Fehler tritt auf, wenn Sie einen Oracle-OUTER JOIN mit dem (+) Operator innerhalb einer BETWEEN-Klausel verwenden, die mehrere Tabellen enthält. Snowflake unterstützt diese spezielle Syntaxkombination nicht. Das Problem tritt insbesondere dann auf, wenn die BETWEEN-Klausel Spalten aus verschiedenen Tabellen referenziert.
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(+);
Ausgabecode:¶
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(+);
Empfehlungen¶
Konvertieren Sie den Outer Join manuell in die ANSI-Syntax.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0123¶
Schweregrad¶
Medium
Beschreibung¶
Der Verweis auf einen Datenbanklink wurde aus dem Objektnamen entfernt, da Snowflake keine Datenbanklinks unterstützt. Nur der Teil des Namens vor dem Symbol @
wird beibehalten.
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;
Ausgabecode:¶
- 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;
Empfehlungen¶
Stellen Sie sicher, dass alle Datenbanklinks eindeutige Namen haben. Wenn mehrere Datenbanklinks denselben Namen haben und der Code mehrfach migriert wird, kann es sein, dass die externe Webschnittstelle (External Web Interface, EWI) Informationen falsch verarbeitet, je nachdem, welcher Datenbanklink zuerst verarbeitet wird.
Verschieben Sie Datenbankobjekte, die von Datenbanklinks referenziert werden, in dieselbe Snowflake-Datenbankinstanz, die Sie verwenden.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0032¶
Schweregrad¶
Medium
Beschreibung¶
Dieser Fehler tritt auf, wenn Sie versuchen, einen nicht unterstützten Parameter in einer Funktion zu verwenden.
Beispielcode¶
Eingabecode:¶
SELECT TO_CHAR(DATE '1998-12-25', 'AM') FROM DUAL;
Ausgabecode:¶
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;
Empfehlungen¶
Die Funktion wird in eine benutzerdefinierte Funktionsvorlage (UDF) konvertiert, die Sie an das Verhalten des Parameters anpassen können.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0006¶
Diese EWI-Meldung (Error, Warning, Information) ist nicht mehr in Gebrauch. Aktuelle Informationen entnehmen Sie bitte der Dokumentation zu SSC-FDM-OR0047.
Schweregrad¶
Niedrig
Beschreibung¶
Der Sitzungsparameter TIMESTAMP_OUTPUT_FORMAT sollte auf „DD-MON-YY HH24.MI.SS.FF AM TZH:TZM“ gesetzt werden, um sicherzustellen, dass die Zeitstempel im richtigen Format angezeigt werden und die Gleichwertigkeit zwischen den Systemen erhalten bleibt.
Beispielcode¶
Eingabecode:¶
SELECT SYSTIMESTAMP FROM DUAL;
Beispiel für die TIMESTAMP-Standardausgabe in Oracle¶
January 13, 2021 04:18:37.288656 PM UTC
Ausgabecode:¶
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¶
2021-01-13 08:18:19.720 -080
Empfehlungen¶
Um zu ändern, wie Zeitstempel in Snowflake angezeigt werden, führen Sie diese Abfrage aus:
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'DD-MON-YY HH24.MI.SS.FF AM TZH:TZM';
Wenn Sie zusätzliche Unterstützung benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0057¶
Schweregrad¶
Kritisch
Teile der Codeausgabe wurden entfernt, um sie verständlicher zu machen.
Beschreibung¶
Verschachtelte Prozeduren oder Funktionen (Prozeduren/Funktionen, die innerhalb anderer Prozeduren/Funktionen definiert sind) können zurzeit nicht übersetzt werden. Dieses Feature wird in einer zukünftigen Version verfügbar sein.
Beispielcode¶
Eingabecode:¶
CREATE OR REPLACE function FOO1 RETURN INTEGER AS
FUNCTION FOO2 return integer;
FUNCTION FOO2 RETURN INTEGER AS
BEGIN
RETURN 123;
END;
BEGIN
RETURN FOO2() + 456;
END;
Ausgabecode:¶
--** SSC-FDM-0029 - 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":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0057 - TRANSFORMATION FOR NESTED PROCEDURE OR FUNCTION IS NOT SUPPORTED ***/!!!
FUNCTION FOO2 return integer;
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0057 - TRANSFORMATION FOR NESTED PROCEDURE OR FUNCTION IS NOT SUPPORTED ***/!!!
FUNCTION FOO2 RETURN INTEGER AS
BEGIN
RETURN 123;
END;
BEGIN
RETURN FOO2() + 456;
END;
$$;
Empfehlungen¶
Endbenutzer müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0047¶
Schweregrad¶
Niedrig
Teile des Codes wurden weggelassen, um das Beispiel klar und übersichtlich zu halten.
Beschreibung¶
Diese Warnung erscheint, wenn die Oracle-Funktion TO_NCHAR
während des Migrationsprozesses in die Snowflake-Funktion TO_VARCHAR
umgewandelt wurde.
Es kann Situationen geben, in denen die Codetransformation zu Kompilierungsfehlern führt oder eine unerwartete, vom Original abweichende Ausgabe erzeugt.
Beispielcode¶
Eingabecode:¶
select TO_NCHAR(sysdate,'DY','nls_date_language=english') from dual
Ausgabecode:¶
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;
Der oben gezeigte Code erzeugt einen Fehler, wenn er in Snowflake ausgeführt wird.
Nicht alle Szenarien führen zu Fehlern.
Eingabecode:¶
SELECT TO_NCHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
Ausgabecode:¶
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 läuft erfolgreich in Snowflake und erzeugt bei der Ausführung die gleiche Ausgabe.
Empfehlungen¶
Sie müssen nichts unternehmen.
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-EWI-OR0016¶
Schweregrad¶
Medium
Beschreibung¶
Die unten aufgeführten XML-Funktionen werden derzeit nicht unterstützt:
Die Funktion EXTRACT ruft Daten aus XML-Dokumenten ab.
EXTRACTVALUE ruft bestimmte Werte von XML-Elementen ab.
XMLSEQUENCE konvertiert XML-Daten in ein Tabellenformat.
XMLTYPE definiert einen Datentyp zum Speichern von XML-Inhalten.
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>')));
Ausgabecode:¶
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>')));
Empfehlungen¶
Wenn Sie zusätzliche Unterstützung benötigen, wenden Sie sich bitte an unser Support-Team unter snowconvert-support@snowflake.com.
SSC-EWI-OR0133¶
Schweregrad¶
Medium
Beschreibung¶
Bei der Konvertierung einer OPEN FOR
-Anweisung erstellt SC eine Cursorzuweisung mit demselben Namen wie die ursprüngliche Cursorvariable, zusammen mit zusätzlichen Anweisungen, um deren Verhalten zu replizieren. Wenn der ursprüngliche Code jedoch mehrere OPEN FOR
-Anweisungen enthält, die dieselbe Cursorsariable verwenden, enthält der konvertierte Code mehrere Cursorzuweisungen mit identischen Namen. Dies führt zu Kompilierungsfehlern in Snowflake.
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;
Ausgabecode¶
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: Dynamisches SQL wurde in der folgenden Anweisung entdeckt.
Empfehlungen¶
Um Kompilierungsfehler im Ausgabecode zu beheben, benennen Sie alle Cursorzuweisungen um, die die Warnmeldung SSC-EWI-OR0133 anzeigen.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com