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:

  1. Die Tabelle sperren

  2. Eines der folgenden Werte suchen:

    • Den maximalen Identitätsspaltenwert (für zunehmende Sequenzen)

    • Den minimalen Identitätsspaltenwert (für abnehmende Sequenzen)

  3. Diesen Wert als High Water Mark des Sequenzgenerators festlegen

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

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

Empfehlungen

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

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

Empfehlungen

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

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

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

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

Empfehlungen

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

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

Empfehlungen

  • Von den Benutzern ist keine Aktion erforderlich.

  • Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

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

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;
Copy
  • 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 nur column_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;
Copy

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

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" ...
Copy

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

Ausgabecode:

SELECT
TO_NUMBER('12.48', '99.99', 38, 2)
FROM DUAL;
Copy

Eingabecode:

SELECT CAST('FEBRUARY/18/24' as DATE, 'MONTH/DD/YY') FROM DUAL;
SELECT CAST('FEB/MON/24' as DATE, 'MON/DAY/YY') FROM DUAL;
Copy

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

Empfehlungen

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

Ausgabecode:

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0031 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE ***/!!!
 SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
Copy

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

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

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

Ausgabecode

CREATE OR REPLACE PROCEDURE collection_variable_sample_proc ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "12/16/2024",  "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
	// SnowConvert Helpers Code section is omitted.

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

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

Snowflake Scripting:

-- Unsupported operation: EXCEPT DISTINCT
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0070 - BINARY OPERATION MULTISET EXCEPT IS NOT SUPPORTED ***/!!!
 someValue MULTISET EXCEPT DISTINCT multiset_except FROM
 customers_demo;
Copy

Empfehlungen

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

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

Empfehlungen

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

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

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;
Copy
COL1|COL2|COL3|
-+-+-+
 555| 560| 600|
Copy

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;
Copy
|COL1|COL2|COL3|
|-|-|-|
|555 |555 |555 |
Copy

Empfehlungen

  • Von den Benutzern ist keine Aktion erforderlich.

  • Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

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

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

Empfehlungen

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

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

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

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

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') );
Copy
URL                                                                                                   |
+
https://thecompany.snowflakecomputing.com/api/files/CODETEST/PUBLIC/MY_STAGE/%2Fmydirectory%2Fmyfile.jpg|
Copy

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

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

Empfehlungen

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

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

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

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

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

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

Ausgabecode:

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

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

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

Empfehlungen

  • Von den Benutzern ist keine Aktion erforderlich.

  • Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

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

Snowflake Scripting:

--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":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
    ;
$$;
Copy

Empfehlungen

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

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

Empfehlungen

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

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

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

Ausgabecode:

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

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

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

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

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;
Copy
  • Wenn Ihre REGEXP_LIKE-Bedingung nicht unterstützte Zeichen in der benutzerdefinierten Funktion enthält, sollten Sie den regulären Ausdruck so ändern, dass das gleiche Suchverhalten ohne diese Zeichen erreicht wird. 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;
Copy

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

Empfehlungen

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

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"}}';
Copy
CREATE OR REPLACE SEQUENCE SEQUENCE2
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0068 - SEQUENCE START VALUE EXCEEDS THE MAX VALUE ALLOWED BY SNOWFLAKE. ***/!!!
START WITH -9223372036854775809
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}';
Copy

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

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

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

Ausgabecode:

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0029 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE ***/!!! TO_NUMBER('2,00') "Value" FROM DUAL;
Copy

Empfehlungen

  • Ziehen Sie in Erwägung, eine benutzerdefinierte Funktion (User-Defined Function, UDF) zu erstellen, um die Funktionalität des DEFAULT-Werts bei der Behandlung von ON CONVERSION ERROR zu replizieren.

  • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

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

Snowflake Scripting:

CREATE OR REPLACE PROCEDURE PROC1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "12/16/2024",  "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
    // SnowConvert Helpers Code section is omitted.

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

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

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

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

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

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

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

Empfehlungen

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

Ausgabecode:

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

Hinweis: Das Datumsformat „iw-iyyy“ wird nicht unterstützt.

Empfehlungen

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

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

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

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

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

Empfehlungen

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

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

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

Snowflake Scripting:

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

Empfehlungen

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

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

Empfehlung

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

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

Empfehlungen

SSC-EWI-OR0007

Beschreibung

Diese Meldung erscheint, wenn Sie versuchen, eine CREATE TYPE-Anweisung zu verwenden, die von Snowflake nicht unterstützt wird.

Beispielcode

Eingabecode (Oracle):

CREATE TYPE type6 UNDER type5(COL1 INTEGER);
Copy

Ausgabecode:

--!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
                                           ;
Copy

Empfehlungen

  • Von den Benutzern ist keine Aktion erforderlich.

  • Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

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

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

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

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

Empfehlungen

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

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

Empfehlungen

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

Snowflake Scripting:

--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "oracle",  "convertedOn": "12/16/2024",  "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
   // SnowConvert Helpers Code section is omitted.

   !!!RESOLVE EWI!!! /*** SSC-EWI-OR0072 - PROCEDURAL MEMBER PRAGMA DECLARATION NOT SUPPORTED. ***/!!!
   /*    PRAGMA AUTONOMOUS_TRANSACTION */
   ;
   null;
$$;
Copy

Empfehlungen

  • Von den Benutzern ist keine Aktion erforderlich.

  • Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

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

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

Für die bessere Lesbarkeit wurden einige Abschnitte des Ausgabecodes weggelassen.

Empfehlungen

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

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

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

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

Empfehlungen

  • Von den Benutzern ist keine Aktion erforderlich.

  • Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

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

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

Empfehlungen

  • Von den Benutzern ist keine Aktion erforderlich.

  • Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

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

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

Zugehörige EWI-Meldung

  1. SSC-EWI-OR0036: Warnung: Arithmetische Operationen zwischen String- und Datums-Datentypen können zu unerwarteten Ergebnissen führen.

  2. SSC-PRF-0004: Dieser Code enthält cursorbasierte Schleifen, die die Leistung beeinträchtigen können.

  3. SSC-EWI-OR0110: Die FOR UPDATE-Klausel wird derzeit in Snowflake nicht unterstützt.

Empfehlungen

  • Schreiben Sie die Abfrage mit den Standardanweisungen UPDATE oder DELETE neu. Nehmen Sie bestimmte Spaltenbedingungen in die WHERE-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;
Copy

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

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

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

Empfehlungen

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

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

Empfehlungen

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:

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

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

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

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

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

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

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

Snowflake Scripting:

!!!RESOLVE EWI!!! /*** SSC-EWI-OR0067 - MULTIPLE CONSTRAINT DEFINITION IN A SINGLE STATEMENT IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
ALTER TABLE TABLE1
ADD (
  CONSTRAINT TABLE1_PK
  PRIMARY KEY
  (ID) ,
  CONSTRAINT TABLE1_FK foreign key(ID2)
  references TABLE2 (ID) ON DELETE CASCADE);
Copy

Empfehlungen

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

Snowflake Scripting:

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

Empfehlungen

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 aus

  • values_of_control: Verarbeitet einzelne Werte aus einer Sammlung

  • indices_of_control: Durchläuft Array-Indizes

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

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

Empfehlungen

  • Ändern Sie die FOR LOOP-Bedingung, oder wählen Sie einen anderen LOOP-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(+);
Copy

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

Empfehlungen

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

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

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

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

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

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

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

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

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

Empfehlungen

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
Copy

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

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

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

Das letzte Beispiel läuft erfolgreich in Snowflake und erzeugt bei der Ausführung die gleiche Ausgabe.

Empfehlungen

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

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

Empfehlungen

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

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

Zugehörige EWI-Meldung

  1. 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