SnowConvert: Oracleの機能差¶
SSC-FDM-OR0001¶
注釈
この機能検出メカニズム(FDM)は廃止されています。Oracle SnowConvert の古いバージョン用に設計されたものです。
記述¶
このエラーは、評価レポートファイルの書き込みに問題がある場合に発生します。システムが評価の詳細を正しく保存または生成できません。
ベストプラクティス¶
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0002¶
注釈
この FDM は現在サポートされていません。詳細情報については、 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
--** SSC-FDM-OR0002 - 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
--** SSC-FDM-OR0002 - 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-FDM-OR0003¶
注釈
この FDM は廃止されました。詳細情報については、 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
) /*** SSC-FDM-OR0003 - SEARCH CLAUSE REMOVED FROM THE WITH ELEMENT STATEMENT ***/
SELECT aValue from
atable;
推奨¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0004¶
説明¶
Oracleでは、 ORDER BY SIBLINGS 句は階層クエリで、兄弟の記録(同じレベルの記録)を並べ替えるときに階層構造を維持するために使用されます。この機能はSnowflakeでは利用できません。
コード例¶
入力コード:¶
SELECT LEVEL,
LPAD(' ', 2 * (LEVEL - 1)) || NAME AS FORMATTED_NAME,
JOB_TITLE
FROM EMPLOYEES
START WITH MANAGER_ID IS NULL
CONNECT BY PRIOR EMPLOYEE_ID = MANAGER_ID
ORDER SIBLINGS BY NAME;
生成されたコード:¶
SELECT LEVEL,
NVL(
LPAD(' ', 2 * (
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '-' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!!LEVEL - 1)) :: STRING, '') || NVL(NAME :: STRING, '') AS FORMATTED_NAME,
JOB_TITLE
FROM
EMPLOYEES
START WITH MANAGER_ID IS NULL
CONNECT BY
PRIOR EMPLOYEE_ID = MANAGER_ID
ORDER BY
NAME /*** SSC-FDM-OR0004 - SIBLINGS KEYWORD REMOVED FROM ORDER BY CLAUSE BECAUSE SNOWFLAKE DOES NOT SUPPORT IT ***/;
SIBLINGS 句が提供する正確な順序は直接利用できませんが、これらの方法を使用して同様の結果を得ることができます。
クエリを別のクエリで囲み、
ORDER BY
を使って結果を並べ替えます。まず、
CONNECT BY
を使用して、階層クエリを含む共通テーブル式(CTE)を作成します。次に、この CTE を参照する別のクエリを作成し、ORDER BY
を使用して兄弟(同じ階層レベルの行)を並べ替えます。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0005¶
説明¶
Snowflakeは同義語をサポートしていません。同義語は元のオブジェクト名に変換されます。
コード例¶
入力コード:¶
CREATE TABLE TABLE1
(
COLUMN1 NUMBER
);
CREATE OR REPLACE SYNONYM B.TABLE1_SYNONYM FOR TABLE1;
SELECT * FROM B.TABLE1_SYNONYM WHERE B.TABLE1_SYNONYM.COLUMN1 = 20;
生成されたコード:¶
CREATE OR REPLACE TABLE TABLE1
(
COLUMN1 NUMBER(38, 18) /*** 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"}}'
;
-- --** SSC-FDM-OR0005 - SYNONYMS NOT SUPPORTED IN SNOWFLAKE BUT REFERENCES TO THIS SYNONYM WERE CHANGED BY THE ORIGINAL OBJECT NAME. **
-- CREATE OR REPLACE SYNONYM B.TABLE1_SYNONYM FOR TABLE1
;
SELECT * FROM
TABLE1
WHERE
TABLE1.COLUMN1 = 20;
ベストプラクティス¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0006¶
説明¶
この警告は、 NOT NULL 列制約が列のインライン定義にOracleの制約状態の1つを含む場合に表示されます。
[ RELY | NORELY | RELY DISABLE | RELY ENABLE | VALIDATE | NOVALIDATE ]
Snowflakeはこれらの状態をサポートしていないため、 NOT NULL
インライン制約は削除されます。
コード例¶
入力コード:¶
CREATE TABLE Table1(
col1 INT NOT NULL RELY
);
生成されたコード:¶
CREATE OR REPLACE TABLE Table1 (
col1 INT NOT NULL /*** SSC-FDM-OR0006 - CONSTRAINT STATE RELY REMOVED FROM NOT NULL INLINE CONSTRAINT ***/
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
ベストプラクティス¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0007¶
説明¶
Snowflakeはオブジェクトのバージョン管理をサポートしていません。その結果、コード変換時に EDITIONABLE または NONEDITIONABLE の修飾子が削除され、警告メッセージが生成されます。
コード例¶
入力コード:¶
CREATE OR REPLACE EDITIONABLE PROCEDURE FUN1 (n number)is
l_result number;
begin
DELETE FROM employees;
end;
生成されたコード:¶
--** SSC-FDM-OR0007 - SNOWFLAKE DOESN'T SUPPORT VERSIONING OF OBJECTS. DEVELOPERS SHOULD CONSIDER ALTERNATE APPROACHES FOR CODE VERSIONING. **
CREATE OR REPLACE PROCEDURE FUN1 (n NUMBER(38, 18))
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
l_result NUMBER(38, 18);
BEGIN
DELETE FROM
employees;
END;
$$;
ベストプラクティス¶
コードのバージョンを管理する異なった方法を検討してください。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0008¶
注釈
この FDM は現在サポートされていません。詳細情報については、 SSC-EWI-OR0071 をご参照ください。
説明¶
「ALL」という量指定子はSnowflake SQL ではサポートされていません。コードを変換する際、この修飾子は削除され、警告メッセージが表示されます。この変更により、クエリの結果が予想と異なる場合があるため注意してください。
コード例¶
入力コード:¶
SELECT location_id FROM locations
MINUS ALL
SELECT location_id FROM departments;
生成されたコード:¶
SELECT location_id FROM
locations
--** SSC-FDM-OR0008 - QUANTIFIER 'ALL' NOT SUPPORTED FOR THIS SET OPERATOR, RESULTS MAY DIFFER **
MINUS
SELECT location_id FROM
departments;
Snowflakeでは、 INTERSECT
および MINUS/EXCEPT
演算子は、結果セットから重複値を自動的に削除します。
ベストプラクティス¶
「ALL」量指定子の機能を置き換える同等のオプションをSnowflakeで探ります。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0009¶
説明¶
注釈
JavaScript でプロシージャとマクロを生成するには、コマンドに -t JavaScript
または --PLTargetLanguage JavaScript
のいずれかを追加します。
注釈
わかりやすくするため、出力コードの一部を簡略化しています。
この警告は、 SQL の暗黙のカーソル値が使用されている場合に表示されます。Oracleは、クエリのタイプによってこれらの値を異なる方法で処理します。
SELECT
ステートメントの場合: 値は返された行数を表します。UPDATE
、CREATE
、DELETE
、 またはINSERT
ステートメントの場合: 値は影響を受ける行の数を表します。
警告が表示されるのは、この動作の違いが理由です。
コード例¶
入力コード:¶
-- Additional Params: -t JavaScript
--Transformation for implicit cursor
CREATE OR REPLACE PROCEDURE SP_SAMPLE AUTHID DEFINER IS
stmt_no POSITIVE;
BEGIN
IF SQL%ROWCOUNT = 0 THEN
EXIT ;
END IF;
IF SQL%ISOPEN THEN
EXIT ;
END IF;
IF SQL%FOUND THEN
EXIT ;
END IF;
IF SQL%NOTFOUND THEN
EXIT ;
END IF;
END;
生成されたコード:¶
-- Additional Params: -t JavaScript
--Transformation for implicit cursor
CREATE OR REPLACE PROCEDURE SP_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.
let STMT_NO = new POSITIVE();
if (SQL.ROWCOUNT /*** SSC-FDM-OR0009 - SQL IMPLICIT CURSOR VALUES MAY DIFFER ***/ == 0) {
break;
}
if (SQL.ISOPEN) {
break;
}
if (SQL.FOUND) {
break;
}
if (SQL.NOTFOUND) {
break;
}
$$;
ベストプラクティス¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0010¶
説明¶
NUMBER
データ型は、固定小数点数と浮動小数点数の両方を格納するために使用されます。Oracle Databaseを実行するすべてのオペレーティングシステムで一貫して動作します。Oracleでは、数値の格納には NUMBER
データ型の使用を推奨しています。形式は NUMBER(X, Y)
で、 _ X _ は精度(総桁数)、 _ Y _ はスケール(10進数)を表します。
たとえば、 NUMBER(5, 3)
は、小数点の前に _ 2 _ 桁、小数点の後に _ 3 _ 桁の数字形式であることを表します。
12.345
その他の重要な考慮事項
スケール _ Y _ は、小数点以下の桁数を指定します。
スケール精度 _ Y-X _ は、小数点以下の後続ゼロの最小数を設定します。
このメッセージは、 NUMBER
データ型の精度値がスケール値より小さい場合に表示されます。Snowflakeはこの構成をサポートしていないため、データの一貫性を維持するために精度値が自動的に増加します。
注釈
この問題は、他の既知の変換との組み合わせで発生する可能性があること、またはまったく発生しない可能性があることに注意してください。たとえば、スケールが19に置き換えられ、以前の精度が19より大きい場合、このメッセージは表示されません。
コード例¶
入力コード:¶
CREATE TABLE SampleNumberTable(Col1 NUMBER(4, 5));
INSERT INTO SampleNumberTable (Col1)
VALUES (0.00009);
INSERT INTO SampleNumberTable (Col1)
VALUES (0.000021);
INSERT INTO SampleNumberTable (Col1)
VALUES (0.012678912);
SELECT * FROM SampleNumberTable;
Col1 |
-------+
0.00009|
0.00002|
0.01268|
生成されたコード:¶
CREATE OR REPLACE TABLE SampleNumberTable (Col1 NUMBER(5, 5) /*** SSC-FDM-OR0010 - NUMBER DATATYPE SMALLER PRECISION WAS INCREASED TO MATCH SCALE ***/ /*** 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 SampleNumberTable(Col1)
VALUES (0.00009);
INSERT INTO SampleNumberTable(Col1)
VALUES (0.000021);
INSERT INTO SampleNumberTable(Col1)
VALUES (0.012678912);
SELECT * FROM
SampleNumberTable;
Col1 |
-------+
0.00009|
0.00002|
0.01268|
ベストプラクティス¶
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0011¶
説明¶
この警告は、Snowflakeではこの機能が利用できないため、移行プロセスが RAISE_APLICATION_ERROR から3番目のオプション引数を削除した場合に表示されます。
コード例¶
入力コード:¶
CREATE OR REPLACE FUNCTION TEST(SAMPLE_A IN NUMBER DEFAULT NULL,
SAMPLE_B IN NUMBER DEFAULT NULL)
RETURN NUMBER
AS
BEGIN
raise_application_error(-20001, 'First exception message', FALSE);
RETURN 1;
END TEST;
生成されたコード:¶
--** SSC-FDM-0029 - USER DEFINED FUNCTION WAS TRANSFORMED TO SNOWFLAKE PROCEDURE **
CREATE OR REPLACE PROCEDURE TEST(SAMPLE_A NUMBER(38, 18) DEFAULT NULL,
SAMPLE_B NUMBER(38, 18) DEFAULT NULL)
RETURNS NUMBER(38, 18)
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
FIRST_EXCEPTION_MESSAGE_EXCEPTION_CODE_0 EXCEPTION (-20001, 'FIRST EXCEPTION MESSAGE');
BEGIN
--** SSC-FDM-OR0011 - ADD TO STACK OF ERRORS IS NOT SUPPORTED, BOOLEAN ARGUMENT FALSE WAS REMOVED. **
RAISE FIRST_EXCEPTION_MESSAGE_EXCEPTION_CODE_0;
RETURN 1;
END;
$$;
ベストプラクティス¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0012¶
説明¶
Snowflakeで COMMIT や ROLLBACK ステートメントを使用する前に、まず特定のセットアップ命令を実行し、これらが正しく機能することを確認する必要があります。これらのステートメントが期待通りに機能するには、適切な構成が必要です。
ALTER SESSION SET AUTOCOMMIT = false;
コード例¶
入力コード¶
COMMIT;
ROLLBACK;
出力コード¶
--** SSC-FDM-OR0012 - COMMIT REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
COMMIT;
--** SSC-FDM-OR0012 - ROLLBACK REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
ROLLBACK;
ベストプラクティス¶
コードを実行する前に、説明セクションで提供されたクエリを実行します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください。
SSC-FDM-OR0013¶
注釈
この FDM は現在サポートされていません。詳細情報については、 SSC-EWI-OR0039 をご参照ください。
説明¶
このメッセージは、 SnowConvert が CYCLE 句を含むクエリを検出した場合に表示されます。Snowflakeは CYCLE 句をサポートしていないため、 SnowConvert は変換時にこのコードを自動的にコメントアウトします。
このステートメントは、再帰操作が発生したことを示します。
句の機能に関する追加情報については、 ドキュメント をご参照ください。
コード例¶
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
--** SSC-FDM-OR0013 - CYCLE CLAUSE IS NOT SUPPORTED IN SNOWFLAKE **
CONNECT BY
A.C = 0 START WITH A.B = 1;
ベストプラクティス¶
データ階層にサイクルが含まれている場合のサイクルの扱い方については、こちらの 記事 をご参照ください。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0014¶
説明¶
このエラーは外部キーのデータ型が参照される列のデータ型と一致しない場合に発生します。
コード例¶
入力コード:¶
CREATE TABLE "MyDb"."MyTable"
(
"COL1" NUMBER,
CONSTRAINT "PK" PRIMARY KEY ("COL1")
);
CREATE TABLE "MyDb"."MyTable1"
(
"COL1" NUMBER(*,0),
CONSTRAINT "FK1" FOREIGN KEY ("COL1") REFERENCES "MyDb"."MyTable" ("COL1")
);
生成されたコード:¶
CREATE OR REPLACE TABLE "MyDb"."MyTable"
(
"COL1" NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
CONSTRAINT "PK" PRIMARY KEY ("COL1")
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
CREATE OR REPLACE TABLE "MyDb"."MyTable1"
(
"COL1" NUMBER(38) /*** 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"}}'
;
ALTER TABLE "MyDb"."MyTable1"
ADD
--** SSC-FDM-OR0014 - FOREIGN KEY DATA TYPE MISMATCH **
CONSTRAINT "FK1" FOREIGN KEY ("COL1") REFERENCES "MyDb"."MyTable" ("COL1");
注釈
このエラーは、「MyDb」.「MyTable1」と「MyDb」.「MyTable」の列「COL1」のデータ型が異なるために発生します。
ベストプラクティス¶
データ階層にサイクルが含まれている場合のサイクルの扱い方については、こちらの 記事 をご参照ください。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0015¶
説明¶
この問題は、 LENGTHB 関数を使用した場合に発生します。この関数は列やリテラル値のサイズをバイト単位で計算します。移行中、この関数は自動的にSnowflakeの OCTET_LENGTH 関数に変換されます。
列パラメーターを指定してこの関数を使用すると、列の値のサイズが計算されます。結果のサイズは列のデータ型に依存するため、OracleとSnowflakeで異なる場合があります。
コード例¶
入力コード:¶
CREATE TABLE char_table
(
char_column1 CHAR(15)
);
INSERT INTO char_table VALUES ('Hello world');
SELECT char_column1, LENGTHB(char_column1), LENGTH('Hello world') FROM char_table;
|CHAR_COLUMN1 |LENGTHB(CHAR_COLUMN1)|LENGTH('HELLOWORLD')|
|---------------|---------------------|--------------------|
|Hello world |15 |11 |
生成されたコード:¶
CREATE OR REPLACE TABLE char_table
(
char_column1 CHAR(15)
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
INSERT INTO char_table
VALUES ('Hello world');
SELECT char_column1,
OCTET_LENGTH(char_column1) /*** SSC-FDM-OR0015 - LENGTHB TRANSFORMED TO OCTET_LENGTH RESULTS MAY VARY DUE TO MEMORY MANAGEMENT OF DBMS ***/, LENGTH('Hello world') FROM
char_table;
|CHAR_COLUMN1|OCTET_LENGTH(CHAR_COLUMN1)|LENGTH('HELLO WORLD')|
|------------|--------------------------|---------------------|
|Hello world |11 |11 |
ベストプラクティス¶
コードで使用されているデータ型を確認します。
OCTET_LENGTH では、Unicode文字を含む文字列のサイズが大きく表示されることがあるため、列のエンコーディングを検証します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0016¶
説明¶
COMMIT や ROLLBACK ステートメントはSnowflakeが自動的に処理するため、必要なくなりました。
コード例¶
入力コード¶
COMMIT WORK FORCE '22.57.53';
ROLLBACK WORK FORCE '22.57.53';
出力コード¶
--** SSC-FDM-OR0016 - COMMIT OPTIONS REMOVED BECAUSE SNOWFLAKE DOES NOT REQUIRE THEM **
--** SSC-FDM-OR0012 - COMMIT REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
COMMIT WORK;
--** SSC-FDM-OR0016 - ROLLBACK OPTIONS REMOVED BECAUSE SNOWFLAKE DOES NOT REQUIRE THEM **
--** SSC-FDM-OR0012 - ROLLBACK REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
ROLLBACK WORK;
ベストプラクティス¶
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0017¶
説明¶
AT TIME ZONE 式は DBTIMEZONE キーワードをサポートしなくなりました。
コード例¶
入力コード:¶
SELECT TIMESTAMP '1998-12-25 09:26:50.12' AT TIME ZONE DBTIMEZONE FROM DUAL;
生成されたコード:¶
SELECT
--** SSC-FDM-OR0017 - DBTIMEZONE WAS REMOVED TO USE THE DEFAULT VALUE OF THE TIMESTAMP **
TO_TIMESTAMP_LTZ( TIMESTAMP '1998-12-25 09:26:50.12')
FROM DUAL;
ベストプラクティス¶
TIMEZONE セッションパラメーターを設定し、一貫した結果を得られるようにします。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0018¶
説明¶
この警告は、OracleのマージステートメントとSnowflakeのマージステートメント実装の間に機能差がある可能性があることを示しています。
コード例¶
入力コード:¶
MERGE INTO people_target pt
USING people_source ps
ON (pt.person_id = ps.person_id)
WHEN MATCHED THEN UPDATE
SET pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title
DELETE where pt.title = 'Mrs.'
WHEN NOT MATCHED THEN INSERT
(pt.person_id, pt.first_name, pt.last_name, pt.title)
VALUES (ps.person_id, ps.first_name, ps.last_name, ps.title)
WHERE ps.title = 'Mr';
生成されたコード:¶
--** SSC-FDM-OR0018 - SNOWFLAKE MERGE STATEMENT MAY HAVE SOME FUNCTIONAL DIFFERENCES COMPARED TO ORACLE **
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECTS "people_target", "people_source" **
MERGE INTO people_target pt
USING people_source ps
ON (pt.person_id = ps.person_id)
WHEN MATCHED AND pt.title = 'Mrs.' THEN
DELETE
WHEN MATCHED THEN
UPDATE SET
pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title
WHEN NOT MATCHED AND ps.title = 'Mr' THEN
INSERT
(pt.person_id, pt.first_name, pt.last_name, pt.title)
VALUES (ps.person_id, ps.first_name, ps.last_name, ps.title);
ベストプラクティス¶
結果がOracleと異なる場合は、以下の手順を検討してください。
リンク で実行順序の優先順位を確認する
スキップされた DML ステートメントは、適宜、マージステートメントの前または後に実行する
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0019¶
説明¶
この警告は、 ROWS ウィンドウフレームユニットがソースコードで検出されたときに表示されます。
ROWS 関数は、データベース内の行の物理的な順序に依存しています。この順序は、異なるプラットフォームに移行する際に異なる場合があります。不整合を防ぐために、明示的な ORDER BY 句を追加して、行の順序の一貫性を確保することができます。
注釈
Oracleドキュメント によると、分析関数はオフセットタイプによって動作が異なります。
論理オフセット関数は常に決定論的な結果を返します。
物理オフセット関数は、一意な順序を保証しない限り、非決定的な結果を返すことがあります。
一意な順序付けを行うには、
order_by_clause
に複数の列を含める必要が生じる場合があります。
潜在的な問題を防ぐため、先に進む前に、関数が一貫性のある(決定論的な)結果を生成することを検証することをお勧めします。
コード例¶
入力コード:¶
SELECT
SUM(C_BIRTH_DAY)
OVER (
ORDER BY C_BIRTH_COUNTRY
ROWS UNBOUNDED PRECEDING) AS MAX1
FROM WINDOW_TABLE;
生成されたコード:¶
SELECT
SUM(C_BIRTH_DAY)
OVER (
ORDER BY C_BIRTH_COUNTRY ROWS UNBOUNDED PRECEDING /*** SSC-FDM-OR0019 - WINDOW FRAME OUTPUT MAY NOT BE EQUIVALENT ***/) AS MAX1
FROM
WINDOW_TABLE;
ベストプラクティス¶
クエリに ORDER BY 句を追加して、Snowflake結果の行の順序を一貫したものにします。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0020¶
注釈
この FDM は現在サポートされていません。詳細情報については、 SSC-EWI-OR0051 をご参照ください。
説明¶
この警告は、 PRAGMA EXCEPTION_INIT 関数をプロシージャ内で使用する場合に表示されます。例外名と SQL エラーコードは、 RAISE 関数で定義されています。Snowflake Scriptingへの変換時に、 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
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0097 - PROCEDURE PROPERTIES ARE NOT SUPPORTED IN SNOWFLAKE PROCEDURES ***/!!!
AS
$$
DECLARE
--** SSC-FDM-OR0023 - EXCEPTION CODE NUMBER EXCEEDS SNOWFLAKE SCRIPTING LIMITS **
NEW_EXCEPTION EXCEPTION;
--** SSC-FDM-OR0020 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED **
PRAGMA EXCEPTION_INIT(NEW_EXCEPTION, -63);
NEW_EXCEPTION2 EXCEPTION (-20100, '');
--** SSC-FDM-OR0020 - 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-FDM-OR0021¶
説明¶
Snowflake Scriptingの FOR LOOP
条件には、 INTEGER
値または INTEGER
を返す式が必要です。浮動小数点数を使用すると、自動的に丸められ、意図したループの境界が変わってしまう可能性があります。
下限値は小数点以下を切り捨てます。例:
3.1 -> 3、 6.7 -> 7、 4.5 -> 5
上限値は小数点以下を切り捨てます。例:
3.1 -> 3、 6.7 -> 6、 4.5 -> 4
CREATE OR REPLACE PROCEDURE p1()
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
DECLARE
var1 VARCHAR DEFAULT '';
var2 VARCHAR DEFAULT '';
var3 VARCHAR DEFAULT '';
BEGIN
--Loop 1
FOR i IN 1.2 TO 5.2 DO
var1 := var1 || ' ' || i::VARCHAR;
END FOR;
--Loop 2
FOR i IN 1.7 TO 5.5 DO
var2 := var2 || ' ' || i::VARCHAR;
END FOR;
--Loop 3
FOR i IN 1.5 TO 5.8 DO
var3 := var3 || ' ' || i::VARCHAR;
END FOR;
RETURN ' Loop1: ' || var1 ||
' Loop2: ' || var2 ||
' Loop3: ' || var3;
END;
$$;
CALL p1();
P1 |
--------------------------------------------------+
Loop1: 1 2 3 4 5 |
Loop2: 2 3 4 5 |
Loop3: 2 3 4 5 |
コード例¶
入力コード:¶
CREATE OR REPLACE PROCEDURE p1
AS
BEGIN
FOR i NUMBER(5,1) IN 1.2 .. 5.7 LOOP
NULL;
END LOOP;
END;
生成されたコード:¶
CREATE OR REPLACE PROCEDURE p1 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
BEGIN
--** SSC-FDM-OR0021 - FOR LOOP WITH FLOAT NUMBER AS LOWER OR UPPER BOUND MAY NOT BEHAVE CORRECTLY IN SNOWFLAKE SCRIPTING **
FOR i IN 1.2 TO 5.7 LOOP
NULL;
END LOOP;
END;
$$;
ベストプラクティス¶
FOR LOOP は、他のデータ型ではなく整数値を使用するように条件を変更します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0022¶
注釈
この FDM は現在サポートされていません。詳細情報については、 SSC-EWI-OR0100 をご参照ください。
説明¶
FOR LOOP
は、Oracleでは複数の条件をサポートするのに対し、Snowflake Scriptingでは1つの条件のみをサポートします。Oracleから移行する場合は、最初の条件のみが変換され、それ以降の条件は無視されます。
コード例¶
入力コード:¶
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
--** SSC-FDM-OR0022 - 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-FDM-OR0023¶
注釈
この FDM は現在サポートされていません。詳細情報については、 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
--** SSC-FDM-OR0023 - EXCEPTION CODE NUMBER EXCEEDS SNOWFLAKE SCRIPTING LIMITS **
my_exception EXCEPTION;
--** SSC-FDM-OR0020 - PRAGMA EXCEPTION_INIT IS NOT SUPPORTED **
PRAGMA EXCEPTION_INIT ( my_exception, -19000 );
BEGIN
NULL;
END;
$$;
ベストプラクティス¶
例外コードがSnowflake Scriptingの許容範囲内であることを検証します。そうでない場合は、使用可能な例外番号を選択します。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0024¶
注釈
この FDM は現在サポートされていません。詳細情報については、 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 /*** SSC-FDM-OR0024 - COLUMNS FROM EXPRESSION unknownTable%ROWTYPE NOT FOUND ***/;
END;
$$;
ベストプラクティス¶
参照タイプ定義に列定義が含まれているかどうかをチェックします。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0025¶
説明¶
プロシージャ内のOracle変数宣言で使用される NOT NULL
制約は、Snowflakeプロシージャ変数宣言では使用できません。
コード例¶
入力コード:¶
CREATE OR REPLACE PROCEDURE PROC04
IS
var3 FLOAT NOT NULL := 100;
BEGIN
NULL;
END;
生成されたコード:¶
CREATE OR REPLACE PROCEDURE PROC04 ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
var3 FLOAT := 100 /*** SSC-FDM-OR0025 - NOT NULL CONSTRAINT IS NOT SUPPORTED BY SNOWFLAKE ***/;
BEGIN
NULL;
END;
$$;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0026¶
注釈
この FDM は現在サポートされていません。詳細情報については、 SSC-EWI-OR0045 をご参照ください。
説明¶
このエラーは、データをサポートされていないデータ型に変換しようとしたときに発生します。
例¶
入力コード:¶
select cast(' $123.45' as number, 'L999.99') from dual;
生成されたコード:¶
select
--** SSC-FDM-OR0026 - CAST TYPE NOT SUPPORTED **
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0011 - THE FORMAT PARAMETER ' $123.45' IS NOT SUPPORTED ***/!!!
cast(' $123.45' as NUMBER(38, 18) , 'L999.99') from dual;
関連 EWIs¶
SSC-EWI-OR0011: 「形式」パラメーターはこのコンテキストでは使用できません。
推奨事項¶
キャスト操作はユーザー定義関数(UDF/スタブ)に変換され、キャスト関数の動作をカスタマイズすることができます。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0027¶
注釈
この FDM は廃止されました。詳細情報については、 SSC-EWI-OR0029 のドキュメントをご参照ください。
説明¶
Snowflakeは「変換エラー時のデフォルト」機能をサポートしていません。
コード例¶
入力コード:¶
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value" FROM DUAL;
出力コード:¶
SELECT
--** SSC-FDM-OR0027 - DEFAULT ON CONVERSION ERROR NOT SUPPORTED IN SNOWFLAKE IN SNOWFLAKE **
TO_NUMBER('2,00') "Value" FROM DUAL;
推奨事項¶
ユーザー定義関数(UDF)を作成し、
ON CONVERSION ERROR
を処理する際に、DEFAULT
の値の関数を再現することを検討してください。その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0028¶
注釈
この FDM は廃止されました。最新のドキュメントについては、 SSC-EWI-OR0031 をご参照ください。
説明¶
このエラーは、 SYS_CONTEXT 関数でサポートされていないパラメーターを使用しようとすると発生します。
コード例¶
入力コード:¶
SELECT SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
出力コード:¶
SELECT
--** SSC-FDM-OR0028 - 'NLS_SORT' SYS_CONTEXT PARAMETER NOT SUPPORTED IN SNOWFLAKE **
SYS_CONTEXT ('USERENV', 'NLS_SORT') FROM DUAL;
推奨事項¶
この関数はユーザー定義関数(UDF)スタブに変換され、 SYS_CONTEXT パラメーターの動作を再現するように変更することができます。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0029¶
説明¶
ALTER SESSION ステートメントに、現在のバージョンではサポートされていない句または構成が含まれています。
コード例¶
入力コード:¶
ALTER SESSION SET SQL_TRACE TRUE;
出力コード:¶
----** SSC-FDM-OR0029 - THIS ALTER SESSION CONFIGURATION IS NOT SUPPORTED IN SNOWFLAKE **
--ALTER SESSION SET SQL_TRACE TRUE
;
推奨事項¶
同等のセッション変数を見つけるには、Snowflake ドキュメント をご参照ください。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0030¶
説明¶
クエリが擬似列として ROWID を含む場合、ランタイムエラーを防ぐために NULL に変換され、エラー、警告、情報(EWI)メッセージが生成されます。現在のところ、 ROWID 機能を再現する機能はありません。
コード例¶
入力コードOracle:¶
SELECT ROWID FROM T1;
出力コード:¶
SELECT
--** SSC-FDM-OR0030 - ROWID PSEUDOCOLUMN IS NOT SUPPORTED IN SNOWFLAKE, IT WAS CONVERTED TO NULL TO AVOID RUNTIME ERRORS **
'' AS ROWID
FROM
T1;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0031¶
説明¶
このエラーは、Snowflakeの DML ステートメントが、Oracleの DML ステートメントで使用できるerror_logging句をサポートしていないことを示しています。
コード例¶
入力コード:¶
MERGE INTO people_target pt
USING people_source ps ON (pt.person_id = ps.person_id)
WHEN MATCHED THEN UPDATE
SET pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title
LOG ERRORS;
出力コード:¶
MERGE INTO people_target pt
USING people_source ps ON (pt.person_id = ps.person_id)
WHEN MATCHED THEN
UPDATE
SET pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title
-- --** SSC-FDM-OR0031 - THE ERROR LOGGING CLAUSE IN DML STATEMENTS IS NOT SUPPORTED BY SNOWFLAKE **
--LOG ERRORS
;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0032¶
説明¶
この警告は、Oracleの STANDARD_HASH
関数を文字列以外のパラメーターで使用する場合に表示されます。これは、Snowflakeに移行した場合に異なる結果を生成する可能性があるためです。
コード例¶
入力コード:¶
SELECT STANDARD_HASH(1+1) FROM DUAL;
STANDARD_HASH(1+1) |
--------------------------------------------------+
E39323970701D93598FC1D357F4BF04578CE3242 |
出力コード:¶
SELECT
--** SSC-FDM-OR0032 - STANDARD HASH FUNCTION WITH INPUT NON-STRING PARAMETER GENERATES A DIFFERENT RESULT IN SNOWFLAKE **
SHA1(1+1)
FROM DUAL;
SHA1(1+1) |
--------------------------------------------------+
da4b9237bacccdf19c0760cab7aec4a8359010b0 |
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0033¶
説明
この警告は、 SnowConvert がOracle DBMS_RANDOM.VALUE 組み込みパッケージ関数を移行するときに表示されます。この機能を再現するために作成されたユーザー定義関数(UDF)は、元のOracle関数に比べて精度が低くなっています。
コード例¶
入力コード:¶
CREATE OR REPLACE PROCEDURE built_in_package_proc
IS
var1 NUMBER;
BEGIN
SELECT DBMS_RANDOM.VALUE() INTO var1 FROM DUAL;
SELECT DBMS_RANDOM.VALUE(2,10) INTO var1 FROM DUAL;
END;
出力コード:¶
CREATE OR REPLACE PROCEDURE built_in_package_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
var1 NUMBER(38, 18);
BEGIN
SELECT
--** SSC-FDM-OR0033 - DBMS_RANDOM.VALUE DIGITS OF PRECISION ARE LOWER IN SNOWFLAKE **
DBMS_RANDOM.VALUE_UDF() INTO
:var1
FROM DUAL;
SELECT
--** SSC-FDM-OR0033 - DBMS_RANDOM.VALUE DIGITS OF PRECISION ARE LOWER IN SNOWFLAKE **
DBMS_RANDOM.VALUE_UDF(2,10) INTO
:var1
FROM DUAL;
END;
$$;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0034¶
注釈
この FDM は現在サポートされていません。詳細情報については、 SSC-EWI-OR0001 ドキュメントをご参照ください。
説明¶
このエラーは、 START WITH
ステートメントの値が LIMIT VALUE
に設定されている場合に発生します。
Oracleでは、この句は ALTER TABLE ステートメントでのみ使用されます。
START WITH LIMIT VALUE
オプションは、identity_options
でのみ使用でき、ALTER TABLE MODIFY
と合わせてのみ利用可能です。START WITH LIMIT VALUE
を使用すると、Oracleデータベースは次を実行します。
テーブルをロックします
ID列の最大値(増加シーケンスの場合)または最小値(減少シーケンスの場合)を求めます
この値をシーケンスジェネレーターのハイウォーターマークとして設定します
INCREMENT BY
の値をハイウォーターマークに加算(増加シーケンスの場合)または減算(減少シーケンスの場合)して次の値を生成します
ALTER TABLE ORACLE¶
コード例¶
入力コード:¶
CREATE SEQUENCE SEQUENCE1
START WITH LIMIT VALUE;
出力コード:¶
CREATE OR REPLACE SEQUENCE SEQUENCE1
--** SSC-FDM-OR0034 - 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-FDM-OR0035¶
説明¶
この警告は、 SnowConvert がOracle DBMS_OUTPUT.PUT_LINE
組み込みパッケージ関数を移行するときに表示されます。生成されたユーザー定義関数(UDF)を確認し、期待通りに動作することを確認してください。
この警告メッセージは、 DBMS_OUTPUT.PUT_LINE_UDF
の実装を見直す必要があることを示し、追加情報が表示されます。
警告
この UDF は、パフォーマンスに影響を与える可能性があります。ログを有効にするには、実装コードのコメントを解除します。現在のセットアップでは仮テーブルを使用していることにご注意ください。セッションを超えてデータを持続させる必要がある場合は、 CREATE TABLE ステートメントから TEMPORARY キーワードを削除します。
DBMS_OUTPUT.PUT_LINE_UDF
関数を実行した後、このクエリを実行すると、すべてのログを表示できます。
SELECT * FROM DBMS_OUTPUT.DBMS_OUTPUT_LOG
コード例¶
入力コード:¶
CREATE OR REPLACE PROCEDURE builtin_package_call
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(1);
DBMS_OUTPUT.PUT_LINE("Test");
END;
出力コード:¶
CREATE OR REPLACE PROCEDURE builtin_package_call ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
BEGIN
--** SSC-FDM-OR0035 - CHECK UDF IMPLEMENTATION FOR DBMS_OUTPUT.PUT_LINE_UDF. **
CALL DBMS_OUTPUT.PUT_LINE_UDF(1);
--** SSC-FDM-OR0035 - CHECK UDF IMPLEMENTATION FOR DBMS_OUTPUT.PUT_LINE_UDF. **
CALL DBMS_OUTPUT.PUT_LINE_UDF("Test");
END;
$$;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0036¶
説明¶
このメッセージは、Oracle組み込みパッケージのプロシージャまたは関数の移行中に SnowConvert が特定の引数を削除した場合に表示されます。
Snowflakeに対応するパラメーターがない、または不要になった元のパラメーターは、変換後のコードから削除されます。しかし、これらのパラメーターは、参照と追跡の目的で、 EWI (エラー、警告、情報)メッセージにドキュメント化されています。
コード例¶
入力コード:¶
CREATE OR REPLACE PROCEDURE built_in_package_proc
IS
w_file UTL_FILE.FILE_TYPE;
BEGIN
w_file:= UTL_FILE.FOPEN('MY_DIR','test.txt','W',32760);
UTL_FILE.PUT_LINE(w_file,'New line');
END;
出力コード:¶
CREATE OR REPLACE PROCEDURE built_in_package_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
DECLARE
w_file OBJECT /*** SSC-FDM-0015 - REFERENCED CUSTOM TYPE 'UTL_FILE.FILE_TYPE' IN QUERY NOT FOUND, USAGES MAY BE AFFECTED ***/ := OBJECT_CONSTRUCT();
BEGIN
--** SSC-FDM-OR0036 - PARAMETERS: 'LOCATION, MAX_LINESIZE_UDF' UNNECESSARY IN THE IMPLEMENTATION. **
CALL UTL_FILE.FOPEN_UDF('test.txt', 'W');
SELECT
*
INTO
w_file
FROM
TABLE(RESULT_SCAN(LAST_QUERY_ID()));
--** SSC-FDM-OR0036 - PARAMETERS: 'AUTOFLUSH_UDF' UNNECESSARY IN THE IMPLEMENTATION. **
CALL UTL_FILE.PUT_LINE_UDF(:w_file, 'New line');
END;
$$;
推奨事項¶
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0037¶
注釈
この FDM は現在サポートされていません。詳細情報については、 SSC-EWI-OR0004 をご参照ください。
注釈
読みやすくするために、この例ではコードの一部を簡略化しています。
説明¶
この警告は、 SELECT ステートメントにSnowflakeがサポートしていない句が含まれている場合に表示されます。以下の句はサポートされていません。
コンテナーデータベースとプラグ可能なデータベース
サブクエリの使用制限
階層的データ構造とクエリ
外部テーブルの変更
データベースリンクとクロスデータベース接続
データベースのシャーディング構成
テーブルのパーティション分割
テーブルのサブパーティション分割
階層クエリ操作
コード例¶
入力コード:¶
SELECT * FROM TABLE1 EXTERNAL MODIFY (LOCATION 'file.csv' REJECT LIMIT UNLIMITED);
出力コード:¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "TABLE1" **
SELECT * FROM
TABLE1
-- --** SSC-FDM-OR0037 - 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-FDM-OR0038¶
注釈
この FDM は現在サポートされていません。詳細情報については、 SSC-EWI-OR0128 をご参照ください。
説明¶
このメッセージは、ブールカーソル属性がサポートされていないか、同等の関数がないため、 SnowScript で使用できないことを示しています。以下のテーブルは、 SnowScript で再現できるブールカーソル属性のリストです。
ブールカーソル属性 |
ステータス |
---|---|
|
エミュレート可 |
|
エミュレート可 |
|
サポート外 |
コード例¶
入力コード:¶
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;
出力コード:¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "table1" **
CREATE OR REPLACE PROCEDURE cursor_attributes_proc ()
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":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*/ /*** SSC-FDM-OR0038 - 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-FDM-OR0039¶
注釈
この FDM は現在サポートされていません。詳細情報については、 SSC-EWI-OR0007 をご参照ください。
説明¶
このメッセージは、SnowflakeがサポートしていないCreate Typeステートメントを使用しようとしたときに表示されます。
コード例¶
入力コード(Oracle):¶
CREATE TYPE type6 UNDER type5(COL1 INTEGER);
出力コード:¶
----** SSC-FDM-OR0039 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE **
--CREATE TYPE type6 UNDER type5(COL1 INTEGER)
;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0040¶
説明¶
Snowflakeでは数値の変更はできません。Snowflakeでは、10進数は常にドット(.)で区切られます。ALTER セッションステートメントがコメントアウトされ、警告メッセージが追加されています。
コード例¶
Oracle:¶
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.';
Snowflakeスクリプト¶
----** SSC-FDM-OR0040 - NUMERIC CHARACTERS CANNOT BE ALTERED IN SNOWFLAKE. THE DECIMAL SEPARATOR IN SNOWFLAKE IS THE DOT CHARACTER. **
--ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.'
;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0041¶
注釈
この FDM は現在サポートされていません。詳細情報については、 SSC-EWI-OR0076 をご参照ください。
説明¶
組み込みパッケージの翻訳は現在利用できません。
コード例¶
入力コード(Oracle):¶
SELECT
UTL_RAW.CAST_TO_RAW('some magic here'),
DBMS_UTILITY.GET_TIME
FROM DUAL;
出力コード:¶
SELECT
--** SSC-FDM-OR0041 - TRANSLATION FOR BUILT-IN PACKAGE 'UTL_RAW.CAST_TO_RAW' IS NOT CURRENTLY SUPPORTED. **
'' AS CAST_TO_RAW,
--** SSC-FDM-OR0041 - TRANSLATION FOR BUILT-IN PACKAGE 'DBMS_UTILITY.GET_TIME' IS NOT CURRENTLY SUPPORTED. **
'' AS GET_TIME
FROM DUAL;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0042¶
説明¶
日付データ型は、Snowflakeでは日付またはタイムスタンプに変換されます。Snowflakeの日付タイプはOracleの日付タイプと動作が異なるため、この変換は --disableDateAsTimestamp フラグに依存します。
主な相違¶
Oracle DATE |
Snowflake DATE |
|
---|---|---|
機能性 |
日時情報を格納する |
日付情報(年、月、日)のみを格納する |
内部ストレージ |
エポックからの秒数を表すバイナリ数値 |
日付に最適化されたコンパクトな形式 |
ユースケース |
汎用日時ストレージ |
日付情報のみが必要なシナリオ |
メリット |
日付と時刻の両方をサポート |
より効率的な日付のストレージ |
制限事項 |
日付と時刻を別々に保存することはできない |
時刻情報を格納しない |
コード例¶
入力コード(Oracle):¶
CREATE TABLE "PUBLIC"."TABLE1"
(
"CREATED_DATE" DATE,
"UPDATED_DATE" DATE
);
出力コード:¶
CREATE OR REPLACE TABLE "PUBLIC"."TABLE1"
(
"CREATED_DATE" TIMESTAMP /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/,
"UPDATED_DATE" TIMESTAMP /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
-- Additional Params: --disableDateAsTimestamp
CREATE OR REPLACE TABLE "PUBLIC"."TABLE1"
(
"CREATED_DATE" DATE /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/,
"UPDATED_DATE" DATE /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
推奨事項¶
ユーザーからのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0043¶
説明¶
このエラーは、 TO_CLOB 関数を TO_VARCHAR に変換する際に発生します。BFILE または BLOB パラメーターを扱う場合、適切に変換するために形式パラメーターを指定する必要がある場合があります。
コード例¶
入力コード:¶
SELECT TO_CLOB('Lorem ipsum dolor sit amet') FROM DUAL;
出力コード:¶
SELECT
--** SSC-FDM-OR0043 - BFILE/BLOB PARAMETERS ARE CONSIDERED BINARY, FORMAT MAY BE NEEDED. **
TO_VARCHAR('Lorem ipsum dolor sit amet')
FROM DUAL;
推奨事項¶
出力結果が元のコードと変換後のコードで一致していることを検証します。互換性を確保するために、必要に応じて形式パラメーターを追加します。
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
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
--** SSC-FDM-OR0044 - 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-FDM-OR0047¶
説明¶
TIMESTAMP_OUTPUT_FORMAT セッションパラメーターは、「DD-MON-YY HH24.MI.SS.FF AM TZH:TZM」のように設定して、タイムスタンプが正しい形式で表示され、期待される出力と一致するようにする必要があります。
コード例¶
入力コード:¶
SELECT SYSTIMESTAMP FROM DUAL;
Oracleのデフォルト TIMESTAMP 形式の例¶
13-JAN-21 04:18:37.288656 PM UTC
出力コード:¶
SELECT
CURRENT_TIMESTAMP() /*** SSC-FDM-OR0047 - YOU MAY NEED TO SET TIMESTAMP OUTPUT FORMAT ('DD-MON-YY HH24.MI.SS.FF AM TZH:TZM') ***/
FROM DUAL;
Snowflake がデフォルトで TIMESTAMPS を表示する方法¶
2021-01-13 08:18:19.720 -080
Recommendations
Snowflakeでのタイムスタンプの表示方法を変更するには、次のクエリを実行します。
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'DD-MON-YY HH24.MI.SS.FF AM TZH:TZM';
その他のサポートについては、サポートチーム snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0045
注釈
この FDM は廃止されました。詳細情報については、 SSC-EWI-OR0010 のドキュメントをご参照ください。
説明¶
この警告は、クエリで PARTITION
句と SUBPARTITION
句が使用されている場合に表示されます。Snowflakeはデータのパーティショニングを自動的に管理するため、これらの句は必要ありません。
コード例¶
入力コード:¶
SELECT * FROM TABLITA PARTITION(col1);
出力コード:¶
SELECT * FROM
TABLITA
-- --** SSC-FDM-OR0045 - PARTITIONS CLAUSES ARE HANDLED BY SNOWFLAKE **
-- PARTITION(col1)
;
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-FDM-OR0046¶
注釈
読みやすくするために、この例ではコードの一部を簡略化しています。
説明¶
この警告は、 SELECT
ステートメント内でサブクエリの制限が見つかった場合に発生します。
コード例¶
入力コード:¶
SELECT * FROM LATERAL(SELECT * FROM TABLITA WITH READ ONLY CONSTRAINT T);
出力コード:¶
SELECT * FROM LATERAL(SELECT * FROM
TABLITA
-- --** SSC-FDM-OR0046 - THE SUBQUERY RESTRICTION IS NOT POSSIBLE IN SNOWFLAKE **
-- WITH READ ONLY CONSTRAINT T
);
推奨事項¶
ユーザー側からのアクションは必要ありません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください