SnowConvert AI - Oracle - DML STATEMENTS¶
説明¶
DML ステートメントの拡張は、コレクションや記録などの PL/SQL 要素を使用できるため、通常の DML ステートメントとは異なります。今のところ、これらの要素のいくつかはSnowflake Scriptingではサポートされていません。1つのステートメントがサポートされていない場合、翻訳中に EWI が追加されます。その他の DML ステートメントは、プロシージャ内にないものとして翻訳されます。
INSERT ステートメント拡張¶
Oracle INSERT ステートメント拡張をSnowflakeスクリプトに変換するための翻訳リファレンス
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
SQL
INSERTステートメントの PL/SQL 拡張を使用すると、single_table_insertのvalues_clauseで、insert_into_clauseで列リストを指定する代わりに、記録名を指定できます。(Oracle PL/SQL 言語リファレンス INSERT ステートメント拡張)
Snowflake INSERT INTO differs from Snowflake Scripting in variable constraints; needing to have the names preceded by a colon ':' to bind the variables' value.
推奨事項¶
注釈
このコードは例の理解を深めるために実行されました。
Oracle¶
Snowflake¶
INSERT ステートメント拡張の単純なケース¶
Oracle¶
結果¶
NUM |
WORD |
|---|---|
10 |
ten |
11 |
eleven |
Snowflakeスクリプト¶
結果¶
NUM |
WORD |
|---|---|
10 |
ten |
11 |
eleven |
既知の問題¶
1.記録はSnowflake Scriptingではサポートされていません¶
記録はSnowflakeスクリプトでサポートされていないため、 VALUES RECORD 句を使用する代わりに、 SELECT 句に変更し、記録の列を分割する必要があります。詳細は 記録の種類定義セクション を参照してください。
MERGE ステートメント¶
Oracle MERGE ステートメントをSnowflakeスクリプトに変換するための翻訳リファレンス
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
The
MERGEstatement is used to select rows from one or more sources for update or insertion into a table or view. It is possible to specify conditions to determine whether to update or insert into the target table or view. This statement is a convenient way to combine multiple operations. It lets you avoid multipleINSERT,UPDATE, andDELETEDML statements.MERGEis a deterministic statement. It is not possible to update the same row of the target table multiple times in the sameMERGEstatement. (Oracle PL/SQL Language Reference MERGE Statement)
Oracle MERGE 構文¶
Snowflakeスクリプト MERGE 構文¶
サンプルソースパターン¶
サンプル補助データ¶
注釈
このコードは例の理解を深めるために実行されました。
Oracle¶
Snowflake¶
MERGE ステートメントの単純なケース¶
Oracle¶
結果¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
アリス |
Jones |
Mrs. |
3 |
Jane |
Doe |
Miss |
4 |
Dave |
Brown |
Mr |
Snowflake¶
結果¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
アリス |
Jones |
Mrs. |
3 |
Jane |
Doe |
Miss |
4 |
Dave |
Brown |
Mr |
DELETE およびwhere句を含む MERGE ステートメント¶
To find an equivalence for the DELETE statement and the where clause, it is necessary to reorder and implement some changes in the Snowflake merge statement.
変更が必要です。¶
Oracleの DELETE where_clause を、 AND 述語 ステートメントを含む新しいSnowflakeの matchedClause に置き換えます。
Oracleの merge\insert\clause の where\clause を、Snowflakeの notMatchedClause の AND 述語 ステートメントに置き換えます
Oracle¶
結果¶
EMPLOYEE_ID |
BONUS |
|---|---|
153 |
180 |
154 |
175 |
155 |
170 |
159 |
180 |
160 |
175 |
161 |
170 |
164 |
72 |
165 |
68 |
166 |
64 |
167 |
62 |
171 |
74 |
172 |
73 |
173 |
61 |
179 |
62 |
Snowflake¶
結果¶
EMPLOYEE_ID |
BONUS |
|---|---|
153 |
180 |
154 |
175 |
155 |
170 |
159 |
180 |
160 |
175 |
161 |
170 |
164 |
72 |
165 |
68 |
166 |
64 |
167 |
62 |
171 |
74 |
172 |
73 |
173 |
61 |
179 |
62 |
警告
In some cases the changes applied may not work as expected, like the next example:
Oracle¶
結果¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
4 |
Dave |
Brown |
Mr |
Snowflake¶
結果¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
アリス |
Jones |
Mrs. |
4 |
Dave |
Brown |
Mr |
既知の問題¶
1.Oracleのerror_logging_clauseはサポートされていません¶
Snowflake Scriptingのエラーログ句に相当するものはありません。
2.適用した変更が期待どおりに機能しません¶
Sometimes, the changes applied to achieve the functional equivalence between Oracle's merge statement and Snowflake's do not work as expected.
関連 EWIs¶
SSC-FDM-0006:数値型の列はSnowflakeでは同様の動作をしない場合があります。
SSC-FDM-OR0018:Mergeステートメントが期待通りに動作しない可能性があります
SELECT INTO ステートメント¶
Oracle SELECT INTO ステートメントをSnowflakeスクリプトに変換するための翻訳リファレンス
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
SELECTINTOステートメントは、(SQLSELECTステートメントと同様に)1つ以上のデータベーステーブルから値を取得し、(SQLSELECTステートメントでは行わない)変数に格納します。(Oracle PL/SQL 言語リファレンス SELECT INTO ステートメント)
Oracle SELECT INTO 構文¶
Oracle Into句構文¶
Oracle Bulk Collect構文¶
Snowflakeスクリプト SELECT INTO 構文¶
サンプルソースパターン¶
サンプル補助データ¶
注釈
このコードは例の理解を深めるために実行されました。
Oracle¶
Snowflake¶
SELECT INTO ステートメントの単純なケース¶
Oracle¶
結果¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
one |
Snowflakeスクリプト¶
結果¶
既知の問題¶
1.BULK COLLECT INTO はサポートされていません¶
Snowflakeスクリプトは BULK COLLECT INTO 句をサポートしていません。ただし、 ARRAY_AGG を使って新しい変数を構築することは可能です。詳細は コレクション一括操作セクション を参照してください。
2.コレクションと記録はサポートされていません¶
Snowflake Scripting does not support the use of collections nor records. It is possible to migrate them using Semi-structured data types as explained in Collections and records.
関連 EWIs¶
関連 EWIs はありません。
記録の使用をシミュレートする回避策¶
警告
このページは非推奨ですが、互換性のために残されています。更新されたセクションをご覧になりたい方は、 コレクションと記録 をご参照ください。
説明¶
ここでは、Snowflake Scriptingの RESULTSET と CURSORS を使用して、 SELECT と INSERT ステートメントでOracleの記録の動作をシミュレートする方法を説明します。
Snowflake Scripting RESULTSET および CURSOR¶
Snowflake RESULTSET 構文¶
推奨事項¶
注釈
以下の例では、このコードは例の理解を深めるために実行されました。
Oracle¶
Snowflake¶
記録の代わりに RESULTSET とカーソルを使用する¶
Oracle¶
結果¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
one |
Snowflake¶
Cursorの使用
結果¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
one |
既知の問題¶
1.RESULTSET の使用制限¶
RESULTSET の使用は非常に限られています。table(result_scan(last_query_id())) ステートメントの場合、 RESULTSET のクエリが実行された直後に使用する必要があります。詳細情報はこちらの リンク をご覧ください。
関連 EWIs¶
SSC-EWI-0036: データ型が別のデータ型に変換されました。
SSC-EWI-0056: 作成タイプがサポートされていません。