SnowConvert: Oracleの問題¶
SSC-EWI-OR0001¶
説明¶
このエラーは、 START WITH
ステートメントの値が LIMIT VALUE
に設定されている場合に発生します。
Oracleでは、この句は ALTER TABLE ステートメントでのみ使用されます。
identity_options
での使用可能な START WITH LIMIT VALUE
オプションは、 ALTER TABLE MODIFY
コマンドでのみ使用できます。START WITH LIMIT VALUE
を使用すると、Oracleデータベースは次を実行します。
テーブルをロックします
いずれかを探します。
ID列の最大値(増加シーケンスの場合)
ID列の最小値(減少シーケンスの場合)
この値をシーケンスジェネレーターのハイウォーターマークとして設定します
次のシーケンス値を以下で計算します
増加シーケンスの場合: ハイウォーターマーク +
INCREMENT BY 整数
減少シーケンスの場合: ハイウォーターマーク -
INCREMENT BY 整数
ALTER TABLE ORACLE¶
コード例¶
入力コード:¶
CREATE SEQUENCE SEQUENCE1
START WITH LIMIT VALUE;
出力コード:¶
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"}}';
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0050¶
重大性¶
中
説明¶
このエラーは、許容範囲を超える値をキャストしようとしたときに発生します。これは精度値がSnowflakeでサポートされていないことを意味し、コードがコメントアウトされ、このメッセージが追加されます。
コード例:¶
入力コード:¶
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;
出力コード:¶
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;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0110¶
分かりやすくするため、コードの一部を削除しています。
重大度¶
高
説明¶
SnowflakeのSnowScript言語には、 FOR UPDATE
句に直接相当するものはありません。ツールは変換中にエラー、警告、情報(EWI)メッセージを追加し、この句をコメントアウトします。
コード例 ¶
入力コード:¶
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;
出力コード:¶
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;
$$;
推奨事項¶
UPDATE/DELETE
クエリで列の更新を処理します。詳細情報については、エラーコード SSC-EWI-0075 をご参照ください。その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0035¶
分かりやすくするため、出力コードの一部を削除しています。
重大性¶
中
説明¶
Snowflakeで式のコレクションを作成しようとする場合は、 TABLE 関数を使用できません。この関数は現在サポートされていません。
コード例¶
入力コード:¶
SELECT
TABLE2.COLUMN_VALUES
FROM TABLE1 i, TABLE(i.groups) TABLE2;
出力コード:¶
// 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;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0097¶
重大性¶
低
説明¶
Oracleの CREATE PROCEDURE
ステートメント内の追加プロパティは、Snowflakeの CREATE PROCEDURE
構文ではサポートされていないため、移行時に安全に省略することができます。
コード例¶
入力コードOracle:¶
CREATE OR REPLACE PROCEDURE PROC01
DEFAULT COLLATION USING_NLS_COMP
AUTHID CURRENT_USER
ACCESSIBLE BY (PROCEDURE PROC03)
AS
BEGIN
NULL;
END;
出力コード:¶
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;
$$;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0087¶
重大性¶
低
例を明確かつ簡潔にするため、コードの一部を省略しています。
説明¶
このエラーは、(+)演算子を使用するOracleの外側結合構文を ANSI JOIN 句に変換する際に問題があると発生します。具体的には、元のクエリが WHERE 句に循環的なテーブル参照を含んでおり、テーブルが循環パターンで結合されている場合に発生します。
この早期警告インジケーター(EWI)が表示された場合は、 JOIN 操作が正しい順序でないために失敗する可能性があります。
コード例¶
入力コードOracle:¶
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;
出力コード:¶
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;
クエリが構文的に正しいか、不必要にテーブルとテーブルを結合していないか検証します。
問題が解決しない場合は、 WHERE 句で各列のテーブル名を指定します(例:
column_name
ではなく、table1.column_name
を使用する)。その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0100¶
重大性¶
低
説明¶
Oracleの FOR LOOP
は複数の条件を指定できますが、Snowflake Scriptingの FOR LOOP
は単一の条件しかサポートしていません。OracleからSnowflakeに変換する場合は、最初の条件のみが移行され、それ以降の条件は無視されます。
コード例¶
入力コード:¶
CREATE OR REPLACE PROCEDURE P3
AS
BEGIN
FOR i IN REVERSE 1..3,
REVERSE i+5..i+7
LOOP
NULL;
END LOOP;
END;
出力コード:¶
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;
$$;
推奨事項¶
複雑な
FOR LOOP
ステートメントを複数の単純なループに分解するか、ループ条件を書き換えて明確にします。その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0011¶
重大性¶
中
説明¶
SnowflakeのCast関数は、「MONTH」または「DAY」を DATE または TIMESTAMP 形式内で使用する場合の形式パラメーターをサポートしていません。
"MONTH/DD/YYYY" or "MM/DAY/YY" ...
Snowflakeにおいて NUMBER データ型で CAST 関数を使用する場合は、10進数の値を正しく表示するために4つの引数を指定する必要があります。現在、出力コードには TO_NUMBER 関数に必要な引数がすべて用意されていません。10進数の形式が正しくなるように、足りない引数を手動で追加する必要があります。
コード例¶
入力コード:¶
SELECT CAST('12.48' AS NUMBER, '99.99') FROM DUAL;
出力コード:¶
SELECT
TO_NUMBER('12.48', '99.99', 38, 2)
FROM DUAL;
入力コード:¶
SELECT CAST('FEBRUARY/18/24' as DATE, 'MONTH/DD/YY') FROM DUAL;
SELECT CAST('FEB/MON/24' as DATE, 'MON/DAY/YY') FROM DUAL;
出力コード:¶
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;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0031¶
重大性¶
低
説明¶
このエラーは、 SYS_CONTEXT 関数でサポートされていないパラメーターを使用した場合に発生します。Snowflakeは同様のコンテキスト関数を提供しており、代わりに使用することができます。サポートされているコンテキスト関数の詳細情報については、 Snowflakeドキュメント をご参照ください。
コード例¶
入力コード:¶
SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
出力コード:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0031 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE ***/!!!
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
推奨事項¶
この関数はユーザー定義関数(UDF)テンプレートに変換され、 SYS_CONTEXT パラメーターの動作を再現するようにカスタマイズすることができます。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0005¶
この早期警報インジケーター(EWI)は使用されなくなりました。最新のドキュメントについては、 SSC-FDM-OR0043 をご参照ください。
重大性¶
低
説明¶
このエラーは、 TO_CLOB 関数を TO_VARCHAR に変換する際に発生します。BFILE または BLOB パラメーターを扱う場合、適切に変換するために形式パラメーターを指定する必要がある場合があります。
コード例¶
入力コード:¶
SELECT TO_CLOB('Lorem ipsum dolor sit amet') FROM DUAL;
出力コード:¶
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;
推奨事項¶
出力結果がソースコードと変換後のコードで一致していることを検証します。必要に応じて形式パラメーターを追加します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0104¶
重大性¶
高
説明¶
Oracleコレクションは現在、 SnowConvert でサポートされていません。コレクションタイプを使用する変数とそれに関連する操作は、変換後のコードでコメントアウトされます。
-t JavaScript
フラグまたは --PLTargetLanguage JavaScript
オプションをコマンドに追加して、 JavaScript でプロシージャとマクロを生成します。
コード例¶
入力コードOracle:¶
-- 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;
出力コード¶
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;
$$;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0070¶
重大性¶
中
例を明確で分かりやすくするため、コードの一部を削除しています。
説明¶
バイナリ操作は直接変換できません。これを解決するために、ユーザー定義関数を追加しました。
コード例¶
Oracle:¶
-- Unsupported operation: EXCEPT DISTINCT
SELECT someValue MULTISET EXCEPT DISTINCT multiset_except FROM customers_demo;
Snowflake Scripting:¶
-- Unsupported operation: EXCEPT DISTINCT
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0070 - BINARY OPERATION MULTISET EXCEPT IS NOT SUPPORTED ***/!!!
someValue MULTISET EXCEPT DISTINCT multiset_except FROM
customers_demo;
推奨事項¶
エンドユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0030¶
重大性¶
中
説明¶
このエラーは、集計関数を使用するときに最初または最後の値のみを選択するために使用される KEEP FIRST 句または KEEP LAST 句が現在サポートされていないことを示しています。
コード例¶
入力コード:¶
SELECT
department_id,
MIN(salary) KEEP (
DENSE_RANK FIRST
ORDER BY
commission_pct
) "Worst"
FROM
employees;
出力コード:¶
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;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0121¶
重大性¶
中
説明¶
Oracle BFILE 列をSnowflakeに移行する場合は、ファイル名を文字列として格納する VARCHAR 列に変換されます。つまり、これらの移行された列に対してSnowflakeの SUBSTR 関数を使用すると、ファイルのコンテンツではなくファイル名そのものを操作することになります。これは、ファイルの実際のコンテンツを操作するOracleの DBMS_LOB.SUBSTR 関数とは異なります。詳細については、 BFILE データ型 をご参照ください。
コード例¶
入力コード:¶
CREATE TABLE table1
(
bfile_column BFILE
)
SELECT
DBMS_LOB.SUBSTR(bfile_column, 15, 1)
FROM table1;
出力コード:¶
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;
推奨事項¶
ここ のドキュメントを参照して、Snowflakeでのファイルの扱い方を学んでください。
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0092¶
重大性¶
低
説明¶
このメッセージは、丸めのために NUMBER データ型で負のスケールを使用しようとしたときに表示されます。Snowflakeは負のスケールをサポートしていないため、変換からスケールパラメーターが削除されています。
コード例¶
入力コードOracle:¶
CREATE TABLE number_table
(
col1 NUMBER(38),
col2 NUMBER(38, -1),
col3 NUMBER(*, -2)
);
INSERT INTO number_table(col1, col2, col3) VALUES (555, 555, 555);
SELECT * FROM number_table;
COL1|COL2|COL3|
-+-+-+
555| 560| 600|
出力コード:¶
CREATE OR REPLACE TABLE number_table
(
col1 NUMBER(38) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
col2 NUMBER(38) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0092 - NUMBER DATATYPE NEGATIVE SCALE WAS REMOVED FROM OUTPUT ***/!!! /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
col3 NUMBER(38) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0092 - NUMBER DATATYPE NEGATIVE SCALE WAS REMOVED FROM OUTPUT ***/!!! /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
INSERT INTO number_table(col1, col2, col3) VALUES (555, 555, 555);
SELECT * FROM
number_table;
|COL1|COL2|COL3|
|-|-|-|
|555 |555 |555 |
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0004¶
例を明確で分かりやすくするため、コードの一部を削除しています。
説明¶
この警告は、 SELECT ステートメントにSnowflakeがサポートしていない句が含まれている場合に表示されます。以下の句はSnowflakeではサポートされていません。
データを格納するコンテナーオブジェクト
情報整理のための階層的データ構造
データソースの外部変更
データパーティションまたはセグメント
コード例¶
入力コード:¶
SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
出力コード:¶
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);
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0014¶
例を明解で分かりやすくするため、出力コードの一部を削除しています
重大性¶
中
説明¶
現時点では、 SELECT ステートメント内で NLSSORT 関数を使用することはできません。
コード例¶
入力コード:¶
SELECT NLSSORT(name, 'NLS_SORT = ENGLISH') FROM products;
出力コード:¶
// SnowConvert Helpers Code section is omitted.
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0014 - FUNCTION NLSSORT IS NOT SUPPORTED ***/!!!
NLSSORT(name, 'NLS_SORT = ENGLISH') FROM
products;
推奨事項¶
NLSSORT はユーザー定義関数(UDF/スタブ)に変換され、その動作を再現するようにカスタマイズすることができます。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0105¶
重大性¶
低
説明¶
BFILE
データ型は、移行時に VARCHAR
に変換されます。この変換により、ファイルパスとファイル名の格納が可能になります。Oracleの組み込み関数は、 BFILE 型を扱うためのもので、現在はサポートされていません。ファイルパスとファイル名の扱いについての詳細については、 BFILENAME_UDF
ドキュメントをご参照ください。
BUILD_STAGE_FILE_URL
関数は、Snowflakeステージに格納されたファイルにアクセスする安全な方法を提供します。呼び出されると、 ステージ 内の特定のファイルを指す URL を生成します。詳細については、関数のドキュメント ここ をご参照ください。
コード例¶
入力コードOracle:¶
CREATE TABLE bfiletable ( bfile_column BFILE );
INSERT INTO bfiletable VALUES ( BFILENAME('mydirectory', 'myfile.png') );
出力コード:¶
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') );
推奨事項¶
Snowflakeでファイルを管理操作するには、
BUILD_STAGE_FILE_URL
関数やその他の ファイル関数 を使用します。
CREATE OR REPLACE TABLE bfiletable ( bfile_column
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0105 - ADDITIONAL WORK IS NEEDED FOR BFILE COLUMN USAGE. BUILD_STAGE_FILE_URL FUNCTION IS A RECOMMENDED WORKAROUND ***/!!!
VARCHAR
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
INSERT INTO bfiletable
VALUES (PUBLIC.BFILENAME_UDF('mydirectory', 'myfile.png') );
URL |
+
https://thecompany.snowflakecomputing.com/api/files/CODETEST/PUBLIC/MY_STAGE/%2Fmydirectory%2Fmyfile.jpg|
この関数は様々なクラウドストレージプロバイダーに対応しています。ステージングされたローカルシステムからのファイルの使用に関する情報については、この ドキュメント をご参照ください。
データ型をターゲットシステムと互換性のあるものに変換します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0045¶
重大性¶
中
説明¶
このメッセージは、Snowflakeでは使用できない FML またはL形式のキャスティングを使用しようとすると表示されます。このような場合は、コードがコメントアウトされ、この警告メッセージが表示されます。
コード例:¶
入力コード:¶
SELECT CAST(' $123.45' as number, 'L999.99') FROM DUAL;
SELECT CAST('$123.45' as number, 'FML999.99') FROM DUAL;
出力コード:¶
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;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0082¶
例を明解で分かりやすくするため、出力コードの一部を削除しています
重大性¶
中
説明¶
このエラーは、クエリがカスタムタイプとして定義された列内の属性にアクセスしようとすると発生します。自動変換はできませんが、これらのクエリを手動で簡単に変換することができます。
コード例:¶
入力コードOracle:¶
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;
出力コード:¶
!!!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;
推奨事項¶
手動でコードを修正するには、タイプ列にアクセスする際に「.」(ドット)演算子を「:」(コロン)に置き換えます。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0071¶
重大性¶
低
説明¶
Snowflakeでは、「ALL」量指定子の使用がサポートされていません。コードを変換する際、この修飾子は削除され、警告メッセージが生成されます。この変更によって、コードに予期せぬ動作が引き起こされる可能性があることに注意してください。
コード例¶
入力コード:¶
SELECT location_id FROM locations
MINUS ALL
SELECT location_id FROM departments;
出力コード:¶
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;
Snowflakeでは、 INTERSECT および MINUS/EXCEPT 演算子は、結果セットから重複値を自動的に除去します。
推奨事項¶
Snowflakeで「ALL」量指定子の機能を再現する代替メソッドを確認します。MINUS ALL
、 EXCEPT ALL
操作の制限を回避する方法をここにご紹介します。
SELECT location_id FROM
(
SELECT location_id, ROW_NUMBER()OVER(PARTITION BY location_id ORDER BY 1) rn
FROM locations
MINUS
SELECT number_val, ROW_NUMBER()OVER(PARTITION BY location_id ORDER BY 1) rn
FROM departments
);
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0020¶
重大性¶
中程度
説明¶
Snowflakeのこの関数の実装は負の値を受け付けないため、実行時にソースデータベースと異なる動作になります。
コード例¶
入力コード:¶
SELECT INSTR('CORPORATE FLOOR','OR', -3, 2) FROM DUAL;
出力コード:¶
SELECT
REGEXP_INSTR('CORPORATE FLOOR','OR', -3, 2) !!!RESOLVE EWI!!! /*** SSC-EWI-OR0020 - NEGATIVE VALUES NOT SUPPORTED FOR FUNCTION ***/!!! FROM DUAL;
推奨事項¶
負の値を入力パラメーターとして処理できるユーザー定義関数(UDF)を作成するか、別の解決策を探ります。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0051¶
重大性¶
低
説明¶
この警告は、 PRAGMA EXCEPTION_INIT 関数がプロシージャ内で使用されている場合に表示されます。元のコードでは、例外名と SQL コードは RAISE 関数を使用して定義されています。Snowflake Scriptingに変換する際、これらの SQL コードは例外宣言に含まれます。ただし、これらの SQL コード値の中には、Snowflake Scriptingと互換性がないものもあります。
コード例¶
入力コード:¶
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;
/
出力コード:¶
Snowflakeスクリプト¶
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;
$$;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0075¶
重大性¶
中
例を明確で分かりやすくするため、コードの一部を削除しています。
-t JavaScript
または --PLTargetLanguage JavaScript
のフラグをコマンドに追加して、 JavaScript にプロシージャとマクロを生成します。
説明¶
コードブロック内のラベルはステートメント内の参照として使用できません。
コード例¶
Oracle:¶
--Additional Params: -t JavaScript
CREATE OR REPLACE EDITIONABLE PROCEDURE PROCEDURE1
IS
BEGIN
-- procedure body
EXIT loop_b;
-- procedure body continuation
END;
Snowflake Scripting:¶
--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
/* ** SSC-EWI-OR0075 - LABELS IN STATEMENTS ARE NOT SUPPORTED. ** */
/* -- procedure body
EXIT loop_b */
// procedure body
;
// procedure body continuation
;
$$;
推奨事項¶
エンドユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0135¶
重大性¶
低
説明¶
SnowflakeでTime Travelクエリを実行する際、データ保持期間外の時間を指定した場合、結果が得られないことがあります。詳細情報については、 SnowflakeのTime Travel をご参照ください。
コード例¶
入力コード¶
SELECT * FROM employees
AS OF TIMESTAMP
TO_TIMESTAMP('2023-09-27 07:00:00', 'YYYY-MM-DD HH:MI:SS')
WHERE last_name = 'SampleName';
出力コード¶
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';
推奨事項¶
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0101¶
重大性¶
低
説明¶
Oracleの FOR LOOP
は、Snowflake Scriptingでは利用できない追加句をサポートしています。これらには次が含まれます。
BY 句: ループカウンターのステップサイズを制御します
WHILE 句: ループを続けるためのブール条件を追加します
WHEN 句: ループを続けるためのブール条件を追加します
OracleコードをSnowflakeに変換する場合、これらの句はSnowflake Scriptingではサポートされていないため、無視されます。
コード例¶
入力コードOracle:¶
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;
出力コード:¶
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;
$$;
推奨事項¶
複雑な
FOR LOOP
ステートメントを複数の単純なループに分解するか、ループ条件を書き換えて明確にします。その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0010¶
例を明確で分かりやすくするため、コードの一部を削除しています。
重大性¶
Critical
説明¶
この警告は、クエリで PARTITION
句と SUBPARTITION
句が使用されている場合に表示されます。Snowflakeはデータのパーティショニングを自動的に管理するため、これらの句は必要ありません。
コード例¶
入力コード:¶
SELECT * FROM table1 PARTITION(col1);
出力コード:¶
SELECT * FROM
table1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0010 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE. IT REQUIRES MANUAL FIX ***/!!!
PARTITION(col1);
推奨事項¶
Snowflakeで同様の関数を実現するには、
WHERE
句を手動で追加して、特定のパーティション行をフィルターする必要があります。この回避策はクエリのパフォーマンスに影響を与える可能性があることに注意してください。その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0099¶
重大性¶
低
説明¶
このエラーは、例外宣言の番号がSnowflake Scriptingの許容範囲外である場合に発生します。例外番号は-20000~-20999の整数にする必要があります。
コード例¶
入力コード:¶
CREATE OR REPLACE PROCEDURE procedure_exception
IS
my_exception EXCEPTION;
PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
BEGIN
NULL;
END;
出力コード:¶
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;
$$;
推奨事項¶
例外コードがSnowflake Scriptingの許容範囲内であることを検証します。範囲外の場合は、別の利用可能な例外番号を使用します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0089¶
この早期警報インジケーター(EWI)は使用されなくなりました。最新のドキュメントについては、 SSC-FDM-OR0044 をご参照ください。
重大性¶
低
説明¶
この警告は、Oracleの REGEXP_LIKE
関数を一致パラメーター(3番目のパラメーター)で使用した場合に表示されます。この警告は、Oracleの REGEXP_LIKE
を置き換えるSnowflakeの REGEXP_LIKE_UDF
関数が、すべての一致パラメーター文字をサポートしていない可能性があることを示しています。その結果、Snowflakeのクエリ出力がOracleと異なる場合があります。
コード例¶
入力コードOracle:¶
SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i')
ORDER BY last_name;
出力コード:¶
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;
REGEXP_LIKE
条件のユーザー定義関数にサポートされていない文字が含まれている場合は、正規表現を修正して、これらの文字を使用せずに同じマッチング動作を実現することを検討してください。サポートされていない文字については、 REGEXP_LIKE_UDF ドキュメントをご参照ください。その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0128¶
例を明解で分かりやすくするため、出力コードの一部を削除しています
重大性¶
低
説明¶
このメッセージは、ブールカーソル属性がサポートされていないか、同等の関数がないため、 SnowScript で使用できないことを示しています。以下のテーブルは、 SnowScript で再現できるブールカーソル属性のリストです。
| Boolean Cursor Attribute | ステータス | | | - | | %FOUND
| エミュレート可 | | %NOTFOUND
| Can be emulated | | %ISOPEN
| サポート外 |
コード例¶
入力コード:¶
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;
出力コード:¶
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;
$$;
推奨事項¶
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0068¶
重大性¶
中
説明¶
このエラーは、 START WITH
値がSnowflakeの最大許容値より大きい場合に発生します。Snowflakeのドキュメントによると、シーケンス開始値は64ビットの2の補数整数 -2^63
から 2^63-1
までの範囲内にする必要があります。具体的には、最大許容値は以下のとおりです。
正の数: 9223372036854775807
負の数: 9223372036854775808
コード例¶
入力コード:¶
CREATE SEQUENCE SEQUENCE1
START WITH 9223372036854775808;
CREATE SEQUENCE SEQUENCE2
START WITH -9223372036854775809;
出力コード:¶
CREATE OR REPLACE SEQUENCE SEQUENCE1
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0068 - SEQUENCE START VALUE EXCEEDS THE MAX VALUE ALLOWED BY SNOWFLAKE. ***/!!!
START WITH 9223372036854775808
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}';
CREATE OR REPLACE SEQUENCE SEQUENCE2
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0068 - SEQUENCE START VALUE EXCEEDS THE MAX VALUE ALLOWED BY SNOWFLAKE. ***/!!!
START WITH -9223372036854775809
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}';
推奨事項¶
シーケンスをリセットし、その使用方法を調整することをお勧めします。 NOTE: ターゲット列がこの値を格納するのに十分な容量を持っていることを確認してください。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0039¶
例を明解で分かりやすくするため、出力コードの一部を削除しています
重大性¶
低
説明¶
このメッセージは、 SnowConvert が NOCYCLE 句を含むクエリを検出した場合に表示されます。この句は現在Snowflakeではサポートされていません。
このステートメントは、再帰操作が発生したことを示します。
句の機能に関する追加情報については、 ドキュメント をご参照ください。
コード例¶
Connect By¶
入力コード:¶
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;
出力コード:¶
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;
推奨事項¶
データ階層にサイクルが含まれている場合の、サイクルの扱い方についてはこちらの 記事 をご参照ください。
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0029¶
説明¶
Snowflakeは「変換エラー時のデフォルト」機能をサポートしていません。
コード例¶
入力コード:¶
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
出力コード:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0029 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE ***/!!! TO_NUMBER('2,00') "Value" FROM DUAL;
推奨事項¶
ユーザー定義関数(UDF)を作成し、
ON CONVERSION ERROR
を処理する際に、DEFAULT
の値の関数を再現することを検討してください。その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0078¶
重大性¶
中
説明¶
SnowConvert は、Execute Immediateコマンドに含まれる動的 SQL ステートメントを解析できませんでした。
-t JavaScript
フラグまたは --PLTargetLanguage JavaScript
オプションをコマンドに追加して、 JavaScript でプロシージャとマクロを生成します。
コード例¶
Oracle:¶
--Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE PROC1 AS
BEGIN
EXECUTE IMMEDIATE 'NOT A VALID SQL STATEMENT';
END;
Snowflake Scripting:¶
CREATE OR REPLACE PROCEDURE PROC1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0078 - UNABLE TO PARSE DYNAMIC SQL STATEMENT ***/!!!
/*EXEC(`NOT A VALID SQL STATEMENT`)*/
;
$$;
推奨事項¶
動的 SQL ステートメントが正しい構文であることを検証します。
ステートメントがサポートされているかどうかを SnowConvert のドキュメントで確認します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0118¶
重大性¶
中
説明¶
Oracleには、Snowflakeがサポートしていない 組み込みビューとテーブル が含まれます。これらの要素をクエリやステートメントで使用すると、 SnowConvert でエラーメッセージが生成されます。
コード例¶
入力コード:¶
SELECT * FROM ALL_COL_COMMENTS;
SELECT * FROM (SELECT * FROM ALL_COL_COMMENTS);
出力コード:¶
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);
推奨事項¶
Oracle組み込みビューで通常見られる情報は、Snowflakeでは Information Schema を介するか、 SHOW コマンドを使用すると利用できます。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0009¶
重大性¶
高
説明¶
JSON_TABLE 関数は、現在このバージョンではサポートされていません。
コード例¶
入力コード:¶
SELECT jt.phones
FROM j_purchaseorder,
JSON_TABLE(po_document, '$.ShippingInstructions'
COLUMNS
(phones VARCHAR2(100) FORMAT JSON PATH '$.Phone')) AS jt;
出力コード:¶
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;
推奨事項¶
Snowflakeの FLATTEN 関数を JSON_TABLE 機能の代替として使用します。
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0108¶
例を明解で分かりやすくするため、出力コードの一部を削除しています
重大性¶
中
説明¶
カーソル、コレクション、記録、ユーザー定義型などのOracle変数タイプは、直接Snowflakeに変換することはできません。さらに、Snow Scriptingは現在、プレースホルダー、オブジェクト、出力パラメーターの変換をサポートしていません。
これらの変数をSnowflakeの 半構造化データ型 に変換すると解決できる場合があります。
コード例¶
入力コード:¶
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;
出力コード:¶
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;
$$;
推奨事項¶
変数のデータ型を変更するか、Snowflakeの 半構造化データ型 を使用して目的の動作を再現することを検討してください。
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0008¶
重大性¶
低
説明¶
このエラーは、システムが認識できない日付形式に遭遇した場合に発生し、予期しない結果につながる可能性があります。
コード例¶
入力コード:¶
SELECT TO_CHAR(DATE '1998-12-25','iw-iyyy') FROM DUAL;
出力コード:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0008 - UNKNOWN FORMAT, MAY HAVE UNEXPECTED BEHAVIOR ***/!!!
TO_CHAR(DATE '1998-12-25','iw-iyyy'') FROM DUAL;
メモ: 日付形式「iw-iyyy」はサポートされていません。
推奨事項¶
サポートされているタイムスタンプ形式のリストについては、 ドキュメント をご参照ください。
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0109¶
重大性¶
中
説明¶
Snowflake Scriptingは、 EXECUTE IMMEDIATE ステートメントの USING 句で引数として式を使用することをサポートしていません。
Snowflake Scriptingは変数式をサポートしています。下の例のように、手動で変数に割り当てると、式を置き換えることができます。
コード例¶
入力コード:¶
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;
出力コード:¶
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;
$$;
手動で移行されたExecute Immediateプロシージャ:¶
Oracleと同じ結果を維持しながらコンパイルエラーを解決するには、上記のプロシージャを使用します。
CREATE OR REPLACE PROCEDURE PUBLIC.expression_arguments ()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
immediate_input INTEGER := 0;
using_argument_variable INTEGER;
BEGIN
using_argument_variable := immediate_input+1;
EXECUTE IMMEDIATE 'INSERT INTO PUBLIC.immediate_table VALUES (?)' USING (using_argument_variable );
END;
$$;
推奨事項¶
プロシージャを手動で移行するには、変数を作成して式を割り当てます。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0049¶
重大性¶
Critical
例を明確かつ簡潔にするため、コードの一部を省略しています。
説明¶
この警告はステートフルパッケージのサポートされていないメンバーを使用しようとしたときに表示されます。
この機能は将来のリリースで利用可能になる予定です。
コード例¶
入力コード:¶
CREATE OR REPLACE PACKAGE MY_PACKAGE
AS
TYPE COLLECTIONTYPEDEFINITION IS TABLE OF BULKCOLLECTTABLE%ROWTYPE;
END;
出力コード:¶
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;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0129¶
重大性¶
低
例を分かりやすくするため、コード出力の一部を削除しています。
説明¶
この警告は、参照されている TYPE
属性が見つからないため、システムがアイテムのデータ型を決定できない場合に表示されます。このような場合、システムは自動的に VARIANT
データ型をアイテムに割り当てます。
コード例¶
入力コード:¶
CREATE OR REPLACE PROCEDURE procedure01
IS
var1 table01.col1%TYPE;
BEGIN
NULL;
END;
出力コード:¶
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;
$$;
推奨事項¶
参照アイテムのデータ型を手動で検証し、それに応じて参照項目の TYPE 属性を更新します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0069¶
重大性¶
中
説明¶
Snowflakeはシーケンスの CURRVAL プロパティをサポートしていません。
コード例¶
Oracle:¶
select seq1.currval from dual;
Snowflake Scripting:¶
select
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0069 - THE SEQUENCE CURRVAL PROPERTY IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
seq1.currval from dual;
推奨事項¶
CURRVAL プロパティを含むシナリオの処理に関するガイダンスについては、 Snowflakeのドキュメント をご参照ください。
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0038¶
重大性¶
低
説明¶
search_clause
は、 SELECT ステートメントで行の順序を定義することにより、行の処理方法を制御します。この機能により、Oracleではデータをトラバースして返す方法を指定できますが、Snowflakeでは使用できません。
Oracleや類似のデータベースでは、 search_clause
は、再帰クエリや共通テーブル式(CTEs)で階層データがどのように処理されるかを制御するのに役立ちます。search_clause
で列を指定すると、深さ優先か幅優先のどちらかのトラバース方法を選択することができ、行の処理順序が決まります。
Snowflakeでは、 search_clause
メッセージが生成され、その後削除されます。
コード例¶
入力コード:¶
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;
出力コード:¶
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;
推奨¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0033¶
重大性¶
中
説明¶
PL/WITH 句内の SQL 変数宣言は現在サポートされていません。
コード例¶
入力コード:¶
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;
出力コード:¶
// 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;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0007¶
説明¶
このメッセージは、SnowflakeがサポートしていないCreate Typeステートメントを使用しようとしたときに表示されます。
コード例¶
入力コード(Oracle):¶
CREATE TYPE type6 UNDER type5(COL1 INTEGER);
出力コード:¶
--!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0116¶
重大性¶
中
例を分かりやすくするため、出力コードの一部を削除しています。
説明¶
このエラーは、区間だけを使用して算術演算を実行しようとすると発生します。Snowflakeは2つの区間値間の計算をサポートしていません。
コード例¶
入力コード:¶
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;
出力コード:¶
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;
推奨事項¶
操作のタイミングに問題がある場合は、適切な場所に日付やタイムスタンプを追加することで修正できます。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0046¶
この警告はもう使われていません。最新のドキュメントについては SSC-EWI-0109 をご参照ください。
重大性¶
中
説明¶
テーブル変更コマンドがSnowflakeの構文と互換性がない場合はコードがコメントアウトされ、この通知がコメントとして追加されます。
コード例:¶
入力コード:¶
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;
出力コード:¶
!!!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;
推奨事項¶
ユーザー側からこれ以上のアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0023¶
重大性¶
高
例を明確で分かりやすくするため、コードの一部を削除しています。
説明¶
このエラーは、集計関数が使用されている場合に発生します。
DENSE_RANK(): パーティション内の各行に順位を割り当てます。同順位の場合は、順位シーケンスにギャップがありません。
RANK(): パーティション内の各行に順位を割り当てます。同順位の場合は、順位シーケンスにギャップがあります。
PERCENT_RANK(): パーティション内の行の相対順位をパーセント(0から1)で計算します。
CUME_DIST(): パーティション(0から1)内の値の累積分布を計算します。
は、Snowflakeではサポートされていません。
コード例¶
入力コード:¶
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;
出力コード:¶
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;
推奨事項¶
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0072¶
重大性¶
中
例を明確で分かりやすくするため、コードの一部を削除しています。
-t JavaScript
または --PLTargetLanguage JavaScript
のフラグをコマンドに追加して、 JavaScript にプロシージャとマクロを生成します。
説明¶
このバージョンでは、プロシージャメンバーは現在サポートされていません。プロシージャメンバーとはどういう意味か、例を示します。
コードで定義されている定数
データ検索に使用されるデータベースカーソル
コンパイラーの動作を制御するPragmaステートメント
コード内で定義された変数
コード例¶
Oracle:¶
-- Additional Params: -t JavaScript
CREATE OR REPLACE EDITIONABLE PROCEDURE PROCEDURE1
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
NULL;
END;
Snowflake Scripting:¶
--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE PROCEDURE1 ()
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "12/16/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
// SnowConvert Helpers Code section is omitted.
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0072 - PROCEDURAL MEMBER PRAGMA DECLARATION NOT SUPPORTED. ***/!!!
/* PRAGMA AUTONOMOUS_TRANSACTION */
;
null;
$$;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0052¶
重大性¶
低
例を明確かつ簡潔にするため、コード出力の一部を削除しています。
-t JavaScript
フラグまたは --PLTargetLanguage JavaScript
オプションをコマンドに追加して、 JavaScript でプロシージャとマクロを生成します。
説明¶
例外はOracleとSnowflakeの両方に存在します。しかし、 RAISE 関数は、宣言、割り当て、エラーのスローという3つのタスクをすべて処理します。Exception宣言がコメントとして表示され、警告メッセージが表示されるのはこのためです。
コード例¶
入力コード:¶
-- 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;
出力コード:¶
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
;
$$;
読みやすくするため、出力コードの一部を省略しています。
推奨事項¶
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0095¶
重大性¶
低
説明¶
データ型 INTERVAL YEAR TO MONTH
と INTERVAL DAY TO SECOND
はサポートされていないため、 VARCHAR(20)
に変換されます。その結果、 Date Types と、元々 Interval Type であった列との間で操作を実行することはできません。
さらに、IntervalタイプとDateタイプの間で(特にその順序で)操作を実行する場合、Snowflakeはこれらの操作をサポートしていないため、この EWI メッセージが生成されます。
コード例¶
入力コード:¶
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;
出力コード:¶
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;
推奨事項¶
Oracleの関数を再現するユーザー定義関数(UDF)を作成します。
利用可能な場合は、Snowflake Interval Constant として、移行中に列に格納された変換値を使用します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
¶
SSC-EWI-OR0126¶
重大性¶
中
説明¶
このエラーは、システムに組み込まれているカスタム定義のデータ型を持つオブジェクトを使用しようとすると発生します。
コード例¶
入力コード:¶
CREATE OR REPLACE PROCEDURE proc01 is
var1 DBMS_SQL.VARCHAR2_TABLE;
var2 CTX_CLS.DOC_TAB;
BEGIN
varX := var1.property;
varY := var2(1);
END;
出力コード:¶
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;
$$;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0076¶
重大性¶
中
説明¶
組み込みパッケージの翻訳は現在利用できません。
コード例¶
入力コード(Oracle):¶
SELECT
UTL_RAW.CAST_TO_RAW('some magic here'),
DBMS_UTILITY.GET_TIME
FROM DUAL;
出力コード:¶
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;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0136¶
重大性¶
Critical
説明¶
Snowflakeは現在、 UPDATE および DELETE ステートメントの WHERE 句内の CURRENT OF 句をサポートしていません。
コード例¶
Oracle:¶
CREATE OR REPLACE PROCEDURE proc_update_current_of
AS
CURSOR C1
IS
SELECT * FROM F_EMPLOYEE FOR UPDATE OF SALARY nowait;
BEGIN
FOR CREC IN C1
LOOP
UPDATE F_EMPLOYEE SET SALARY=SALARY+2000 WHERE CURRENT OF C1;
END LOOP;
END;
Snowflake Scripting:¶
CREATE OR REPLACE PROCEDURE proc_update_current_of ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
C1 CURSOR
FOR
SELECT * FROM
F_EMPLOYEE
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0110 - FOR UPDATE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FOR UPDATE OF SALARY nowait;
BEGIN
OPEN C1;
--** SSC-PRF-0004 - THIS STATEMENT HAS USAGES OF CURSOR FOR LOOP **
FOR CREC IN C1 DO
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0136 - CURRENT OF CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
UPDATE F_EMPLOYEE
SET SALARY=
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '+' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!!SALARY+2000 WHERE CURRENT OF C1;
END FOR;
CLOSE C1;
END;
$$;
関連 EWI¶
SSC-EWI-OR0036: 警告: 文字列と日付のデータ型間の算術演算は予期せぬ結果を引き起こす可能性があります。
SSC-PRF-0004: このコードにはカーソルベースのループが含まれており、パフォーマンスに影響を与える可能性があります。
SSC-EWI-OR0110: FOR UPDATE 句は現在Snowflakeではサポートされていません。
推奨事項¶
標準の
UPDATE
またはDELETE
ステートメントを使用してクエリを書き換えます。WHERE
句に特定の列条件を含めます。テーブルに重複した記録がある場合、クエリがこれらの記録に複数回影響する可能性があることに注意してください。その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0013¶
重大性¶
中
説明¶
NLS (各国語サポート)パラメーターは、現在以下の関数ではサポートされていません。
値を文字列に変換する(TOCHAR)
値を日付に変換する(TODATE)
値を数値に変換する(TONUMBER)
値をタイムスタンプに変換する(TOTIMESTAMP)
値を指定したデータ型に変換する(CAST)
コード例¶
入力コード:¶
SELECT TO_NUMBER('-AusDollars100','9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY= ''AusDollars''') "Amount" FROM DUAL;
出力コード:¶
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;
推奨事項¶
TO_NUMBER 関数はユーザー定義関数(UDF/スタブ)に変換され、特定のパラメーター要件に基づいて動作をカスタマイズできます。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0042¶
例を明解で分かりやすくするため、出力コードの一部を削除しています
重大性¶
低
説明¶
このメッセージは、 SnowConvert が MODEL 句を含むクエリを検出した場合に表示されます。この句は現在Snowflakeではサポートされていません。
コード例¶
入力コード:¶
SELECT
employee_id,
salary
FROM
employees
MODEL
DIMENSION BY (employee_id)
MEASURES (salary)
();
出力コード:¶
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)
();
推奨事項¶
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0053¶
重大性¶
中
説明¶
このエラーは、不正な入力形式を使用してデータをキャストしようとすると発生します。その結果、コードがコメントアウトされ、このメッセージが表示されます。
コード例:¶
入力コード:¶
SELECT CAST('12sdsd3,456E+40' AS NUMBER, '999,999EEE') FROM DUAL;
SELECT CAST('12345sdsd' AS NUMBER, '99999') FROM DUAL;
出力コード:¶
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;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0002¶
例を明解で分かりやすくするため、出力コードの一部を削除しています
重大性¶
高
説明¶
このエラーは、システムが選択式の列を解決できない場合に発生します。これは通常2つのシナリオで起こります。
解決されていないタイプアクセスを参照する場合
列定義がないユーザー定義タイプ(本文なしのタイプや空のオブジェクトタイプなど)から列にアクセスしようとすると、次のような問題が発生します。
コード例¶
入力コード:¶
CREATE OR REPLACE PROCEDURE record_unknown_table_proc
AS
unknownTable_variable_rowtype unknownTable%ROWTYPE;
BEGIN
INSERT INTO MyTable values unknownTable_variable_rowtype;
END;
出力コード:¶
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;
$$;
推奨事項¶
参照タイプ定義に列定義が含まれているかどうかをチェックします。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0036¶
重大性¶
低
説明¶
このエラーは、算術演算で互換性のない2つのデータ型が使用された場合に発生し、予期しない結果を招く可能性があります。
コード例¶
入力コード:¶
SELECT
SYSDATE,
SYSDATE + '1',
SYSDATE + 'A'
from
dual;
出力コード:¶
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;
文字列と日付のデータ型間で操作を実行する場合は、予期しない結果や不正確な結果が生じる可能性があることに注意してください。日付に関連する操作を行う前に、文字列を日付タイプに変換することをお勧めします。
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0067¶
重大性¶
中程度
例を明確かつ簡潔にするため、コードの一部を省略しています。
説明¶
Snowflakeでは、1つの ALTER TABLE ステートメントで複数の制約を定義することはできません。
コード例¶
Oracle:¶
ALTER TABLE TABLE1 ADD (
CONSTRAINT TABLE1_PK
PRIMARY KEY
(ID)
ENABLE VALIDATE,
CONSTRAINT TABLE1_FK foreign key(ID2)
references TABLE2 (ID) ON DELETE CASCADE);
Snowflake Scripting:¶
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0067 - MULTIPLE CONSTRAINT DEFINITION IN A SINGLE STATEMENT IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
ALTER TABLE TABLE1
ADD (
CONSTRAINT TABLE1_PK
PRIMARY KEY
(ID) ,
CONSTRAINT TABLE1_FK foreign key(ID2)
references TABLE2 (ID) ON DELETE CASCADE);
推奨事項¶
エンドユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0026¶
例を明解で分かりやすくするため、出力コードの一部を削除しています
重大性¶
中
説明¶
このバージョンでは、 ROWID ステートメントは現在サポートされていません。
コード例¶
Oracle:¶
SELECT QUERY_NAME.ROWID from TABLE1;
Snowflake Scripting:¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0026 - ROWID NOT SUPPORTED ***/!!!
QUERY_NAME.ROWID from
TABLE1;
推奨事項¶
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0103¶
重大性¶
高
説明¶
Snowflake Scriptingでは、 FOR LOOP
ステートメントのサポートがOracleに比べて制限されています。Oracleは複数の条件タイプ(ブール式、コレクション、記録など)をサポートしていますが、Snowflakeは整数範囲を境界とする FOR LOOP
のみを許可します。それ以外のループ形式はサポート外としてマークされ、手動で変換する必要があります。
Snowflakeの FOR LOOP
がサポートしていない Oracleの反復制御句:
single_expression_control
: 単一式を評価しますvalues_of_control
: コレクションから個々の値を処理しますindices_of_control
: 配列のインデックスを繰り返しますpairs_of_control
: コレクションからキーと値のペアを処理します
cursor_iteration_control
機能は現在サポートされていません。しかし、式から括弧を取り除くことで、 CURSOR FOR LOOP に変換できます。
FOR i IN (cursor_variable) LOOP NULL; END LOOP;
次のように変更:
FOR i IN cursor_variable LOOP NULL; END LOOP;
コード例¶
入力コードOracle:¶
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;
出力コード:¶
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;
$$;
推奨事項¶
FOR LOOP
条件を変更するか、別のLOOP
タイプを選択して、同じ結果を得ます。その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0090¶
重大性¶
中
分かりやすくするため、コード出力の一部を削除しています。
説明¶
このエラーは、複数のテーブルを含む BETWEEN 句でOracle形式の OUTER JOIN と(+)演算子を使用した場合に発生します。Snowflakeはこの特定の構文の組み合わせをサポートしていません。この問題は、 BETWEEN 句が異なるテーブルの列を参照している場合に特に発生します。
コード例¶
入力コードOracle:¶
SELECT
*
FROM
hr.countries c, hr.regions r, hr.locations l WHERE
l.location_id BETWEEN r.region_id(+) AND c.region_id(+);
出力コード:¶
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(+);
推奨事項¶
外側結合を ANSI 構文に手動で変換します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0123¶
重大性¶
中
説明¶
Snowflakeはデータベースリンクをサポートしていないため、オブジェクト名からデータベースリンク参照が削除されました。@
記号の前にある名前の部分のみが保持されます。
コード例¶
入力コード:¶
-- 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;
出力コード:¶
- 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;
推奨事項¶
すべてのデータベースリンクが一意の名前を持っていることを確認してください。複数のデータベースリンクが同じ名前を共有し、コードが複数回移行された場合、外部ウェブインターフェイス(EWI)では、どのデータベースリンクが最初に処理されたかに基づいて情報が正しく処理されないことがあります。
データベースリンクによって参照されるデータベースオブジェクトを、使用しているのと同じSnowflakeデータベースインスタンスに再配置します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0032¶
重大性¶
中
説明¶
このエラーは、サポートされていないパラメーターを関数内で使用しようとすると発生します。
コード例¶
入力コード:¶
SELECT TO_CHAR(DATE '1998-12-25', 'AM') FROM DUAL;
出力コード:¶
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;
推奨事項¶
この関数はユーザー定義関数(UDF)テンプレートに変換され、パラメーターの動作に合わせてカスタマイズすることができます。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0006¶
この早期警報インジケーター(EWI)は使用されなくなりました。最新の情報については、 SSC-FDM-OR0047 ドキュメントをご参照ください。
重大性¶
低
説明¶
TIMESTAMP_OUTPUT_FORMAT セッションパラメーターは、「DD-MON-YY HH24.MI.SS.FF AM TZH:TZM」のように設定し、タイムスタンプが正しい形式で表示され、システム間で等価性が保たれるようにする必要があります。
コード例¶
入力コード:¶
SELECT SYSTIMESTAMP FROM DUAL;
Oracleのデフォルト TIMESTAMP 出力の例¶
January 13, 2021 04:18:37.288656 PM UTC
出力コード:¶
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;
Snowflakeのデフォルト TIMESTAMP 出力例¶
2021-01-13 08:18:19.720 -080
推奨事項¶
Snowflakeでのタイムスタンプの表示方法を変更するには、次のクエリを実行します。
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'DD-MON-YY HH24.MI.SS.FF AM TZH:TZM';
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0057¶
重大性¶
Critical
分かりやすくするため、コード出力の一部を削除しています。
説明¶
ネストされたプロシージャや関数(他のプロシージャや関数の中で定義されたプロシージャや関数)は、現時点では翻訳できません。この機能は将来のリリースで利用可能になる予定です。
コード例¶
入力コード:¶
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;
出力コード:¶
--** 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;
$$;
推奨事項¶
エンドユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0047¶
重大性¶
低
例を明確かつ簡潔にするため、コードの一部を省略しています。
説明¶
この警告は、移行プロセス中にOracleの TO_NCHAR
関数がSnowflakeの TO_VARCHAR
関数に変換された場合に表示されます。
コード変換の結果、コンパイルエラーが発生したり、オリジナルとは異なる予期せぬ出力が生成されたりする場合があります。
コード例¶
入力コード:¶
select TO_NCHAR(sysdate,'DY','nls_date_language=english') from dual
出力コード:¶
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;
先に示したコードをSnowflakeで実行するとエラーが発生します。
すべてのシナリオでエラーが発生するわけではありません。
入力コード:¶
SELECT TO_NCHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
出力コード:¶
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;
最後の例はSnowflakeで正常に実行され、実行時に同じ出力を生成します。
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0016¶
重大性¶
中
説明¶
以下にリストされた XML 関数は現在サポートされていません。
XML ドキュメントからデータを取得する EXTRACT 関数
XML 要素から特定の値を取得する EXTRACTVALUE
XML データを表形式に変換する XMLSEQUENCE
XML のコンテンツを格納するためにデータ型を定義する XMLTYPE
コード例¶
入力コード:¶
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>')));
出力コード:¶
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>')));
推奨事項¶
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-EWI-OR0133¶
重大性¶
中
説明¶
OPEN FOR
ステートメントを変換する場合は、 SC により、元のカーソル変数と同じ名前のカーソル割り当てが、その動作を再現する追加ステートメントと共に作成されます。しかし、元のコードが同じカーソル変数を使用する複数の OPEN FOR
ステートメントを含んでいる場合、変換されたコードは同じ名前の複数のカーソル割り当てを持つことになります。これはSnowflakeのコンパイルエラーになります。
コード例¶
入力コード¶
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;
出力コード¶
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;
$$;
関連 EWI¶
SSC-EWI-0030: 次のステートメントで動的 SQL が検出されました。
推奨事項¶
出力コードのコンパイルエラーを修正するには、 SSC-EWI-OR0133 警告メッセージを表示するカーソル割り当ての名前を変更します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください