SnowConvert AI - Redshift - CREATE PROCEDURE¶
説明¶
現在のデータベースに対して、新しいストアドプロシージャを作成するか、既存のプロシージャを置き換えます。(Redshift SQL 言語リファレンスプロシージャ作成)。
プロシージャ句の詳細については、以下の定義を参照してください。
文法構文¶
The following is the SQL syntax to create a Procedure in Amazon Redshift. See the Redshift CREATE PROCEDURE specification for this syntax.
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
ALIAS DECLARATION¶
説明¶
ストアドプロシージャのシグネチャで引数名が省略されている場合は、引数のエイリアスを宣言することができます。
Snowflakeにはこのサポートはありません。
機能的な同等性を達成するため、エイリアスは削除され、使用名はすべて変更されます。
名前のないパラメーターに対してエイリアスが宣言されると、パラメーターと使用に対して生成された名前が作成されます。エイリアスが名前を持つパラメーターの場合、エイリアスは実際のパラメーター名に置き換えられます。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
ARGUMENTS MODE¶
説明¶
Amazon Redshiftのストアドプロシージャは、プロシージャの呼び出し中に渡すことができるパラメーターをサポートしています。これらのパラメーターにより、入力値を提供したり、出力値を取得したり、入出力操作に使用したりすることができます。以下にパラメーターのタイプ、モード、使用例を詳しく説明します。Snowflakeは入力値のみをサポートしています。
IN (入力パラメーター)¶
目的: プロシージャに値を渡すために使用します。
デフォルトモード: モードが指定されていない場合、パラメーターは IN とみなされます。
動作: プロシージャに渡された値は、プロシージャ内部では変更できません。
OUT (出力パラメーター)¶
目的: プロシージャから値を返すために使用します。
動作: パラメーターはプロシージャ内部で変更でき、呼び出し元に返されます。初期値は送信できません。
INOUT (入力/出力パラメーター)¶
目的: 値をプロシージャに渡し、更新された値を返すように変更するために使用します。
動作: IN と OUT の動作を組み合わせたものです。出力に関係なく初期値を送信する必要があります。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
既知の問題はありません。
関連 EWIs¶
SCC-EWI-0028 :Snowflakeがサポートしていないタイプです。
SSC-EWI-RS0010 :outパラメーターによるトップレベルプロシージャcallはサポートされていません。
PROCEDURE BODY¶
ヒント
SnowConvert does not support translation for PostgreSQL string constant definition in procedures. Use arrange option
説明¶
Redshiftと同様に、Snowflakeもボディとして $$ procedure_logic $$ を使用したCREATE PROCEDUREをサポートします。Redshiftの構文には違いがあり、 $word$ のように単語を $$ の中に入れたり、 $word$ procedure_logic $word$ のように単語を区切り体として使うことができます。SnowConvert AIは、単語を削除して変換し、 $$ を残します。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
BLOCK STATEMENT¶
説明¶
PL/pgSQL はブロック構造言語です。プロシージャの完全な本文は、変数宣言と PL/pgSQL ステートメントを含むブロックで定義されます。ステートメントはネストされたブロックやサブブロックになることもあります。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
DECLARE¶
説明¶
ループ変数を除くすべてのプロシージャ変数を宣言するセクションです。\ Redshiftはブロックステートメントごとに複数の DECLARE セクションをサポートしていますが、Snowflakeはこの動作をサポートしていないため、ブロックごとに1つの宣言ステートメントにマージする必要があります。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
EXCEPTION¶
説明¶
例外が発生し、例外処理ブロックを追加すると、 RAISE ステートメントやその他のほとんどの PL/pgSQL ステートメントを記述できます。例えば、カスタムメッセージで例外を発生させたり、ログテーブルに記録を挿入することができます。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
LABEL¶
説明¶
ラベルは、Redshiftでブロックを修飾したり、 EXIT または END ステートメントを使用したりするために使用されます。Snowflakeはラベルをサポートしていません。
警告
Snowflakeではラベルはサポートされていないため、 EWI が印刷されます。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
既知の問題はありません。
関連 EWIs¶
SSC-EWI-0094 :ラベル宣言がサポートされていません
NONATOMIC¶
説明¶
NONATOMIC はストアドプロシージャの各ステートメントの後にコミットします。Snowflakeは AUTOCOMMIT パラメーターをサポートしています。AUTOCOMMIT のデフォルト設定は TRUE (有効)です。
AUTOCOMMIT が有効になっている間は、明示的トランザクションの外側にある各ステートメントは、その暗黙的な単一ステートメントトランザクションの内側として扱われます。つまり、そのステートメントは、成功すると自動的にコミットされ、失敗すると自動的にロールバックされます。つまり、Snowflakeは「デフォルトで」 NONATOMIC で動作します。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
POSITIONAL ARGUMENTS¶
説明¶
Redshiftは、$を使用してパラメーターを位置で参照することで、名前のないパラメーターをサポートしています。Snowflakeはこの動作をサポートしていません。機能的な等価性を確保するため、SnowConvert AIは、定義にパラメーター名があれば、パラメーター名でこれらの参照を変換することができます。そうでない場合、SnowConvert AIはパラメーター名を生成し、usesは新しい名前に置き換えられます。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
RAISE¶
説明¶
メッセージの報告やエラーの発生には、
RAISEレベルステートメントを使用します。
注意
RAISEは Snowflake によって完全にサポートされています。
文法構文¶
Amazon Redshiftでは、 RAISE ステートメントを使用して、コンソールにメッセージを生成したり、カスタム例外をスローしたりします。Redshiftでは、メッセージの重大度を示すために、さまざまな レベル を指定することができます。Snowflakeでは、指定されたレベルに応じてコンソールへの呼び出しを行うユーザー定義関数(UDF)を使用して、この機能をエミュレートできます。
例外:\ レベルが「EXCEPTION」の場合、次の一般的なメッセージとともにカスタム例外が発生します: 「EXCEPTION MESSAGE を表示するには、ログを確認する必要があります。」 例外コードは
-20002で、ログ内にカスタムメッセージがあることをユーザーに通知します。これは、Snowflakeでカスタム例外を送信する際の制限によるものです。警告:\ レベルが「WARNING」の場合、
SYSTEM$LOG_WARNはSnowflakeのログに警告メッセージを出力するために使用され、実行のフローを中断することなく潜在的な問題を強調するのに役立ちます。情報:\ その他のレベル(「INFO」など)では、
SYSTEM$LOG_INFOを使用してメッセージをコンソールログに出力し、重大な混乱を引き起こすことなくシステムの状態についてより詳細なフィードバックを提供します。
このアプローチでは、Redshiftの重大度レベルの機能をエミュレートし、Snowflakeの構文と機能に適合させながら、実行中に生成されるメッセージと例外の柔軟性と制御を維持することができます。
制限事項
Snowflakeでログを表示するには、
ACCOUNTADMINまたはSECURITYADMINロールなどの特定の権限が必要です。Snowflakeのログはすぐには利用できないため、情報が表示されるまでに若干の遅れが生じる場合があります。
例外のパーソナライズされたエラーメッセージは、Redshiftのように表示されません。カスタムメッセージを表示するには、ログに直接アクセスする必要があります。
詳しくは以下のページ をご参照ください。
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
UDFs ¶
RAISE_MESSAGE_UDF¶
STRING_FORMAT_UDF¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
RETURN¶
説明¶
RETURN ステートメントは、ストアドプロシージャから呼び出し元に戻ります。(Redshift SQL 言語リファレンスReturn)。
Amazon RedshiftからSnowflakeへのreturnステートメントの変換は簡単で、Snowflakeのreturnステートメントに NULL を追加することだけを検討します。
文法構文¶
サンプルソースパターン¶
単純なケース¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
プロシージャに出力パラメーターがある場合¶
SnowConvert AIは出力パラメーターとして設定されたパラメーターを持つバリアントを返します。そのため、SnowConvert AIは、それぞれのリターンに対して、バリアントが返り値として追加します。
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
SECURITY (DEFINER | INVOKER)¶
説明¶
Amazon Redshiftストアドプロシージャの SECURITY 句は、プロシージャが実行されるアクセス制御と許可コンテキストを定義します。これは、プロシージャが所有者(作成者)と呼び出し元(プロシージャを呼び出すユーザー)のどちらの権限を使用するかを決定します。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
VARIABLE DECLARATION¶
説明¶
ループ変数を除くブロック内のすべての変数を、ブロックのDECLAREセクションで宣言します。
注意
変数宣言は Snowflake によって完全にサポートされています。
文法構文¶
Redshiftでは、 CONSTANT キーワードは実行中の変数の再割り当てを防ぎます。Snowflakeはこのキーワードをサポートしていないため、変換時に削除されます。ロジックは定数変数の再割り当てを試みないため、これは機能に影響しません。
Redshiftの NOT NULL 制約は、変数にnull値を割り当てできないことを保証し、nullでないデフォルト値を要求します。Snowflakeはこの制約をサポートしていないため、変換時に削除されます。ただし、機能を維持するためにデフォルト値が保持されます。
Refcursorで宣言された変数はResultset型に変換されます。詳細情報を参照してください。
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
SSC-FDM-PG0012: NOT NULL 制約が削除されました。この変数に NULL を割り当てても失敗しなくなりました。
TRANSACTIONS¶
COMMIT¶
説明¶
現在のトランザクションをデータベースにコミットします。このコマンドは、トランザクションからのデータベース更新を永続化します。(Redshift SQL 言語リファレンス COMMIT)
文法構文
サンプルソースパターン¶
セットアップデータ¶
Redshift¶
クエリ¶
Snowflake¶
クエリ¶
TRANSACTION キーワードを使用した COMMIT¶
Snowflakeでは TRANSACTION キーワードはサポートされていません。しかし、機能には影響しないため、削除されるだけです。
Redshift¶
クエリ¶
Snowflake¶
クエリ¶
デフォルトのトランザクション動作プロシージャの COMMIT (NONATOMIC 句なし)¶
To avoid out of scope transaction exceptions in Snowflake, the usages of COMMIT will be matched with BEGIN TRANSACTION.
プロシージャ内に複数の COMMIT ステートメントが存在する場合、Redshiftのトランザクション動作をエミュレートするため、 COMMIT の後に複数の BEGIN TRANSACTION ステートメントが生成されます。
Redshift¶
クエリ¶
結果¶
Snowflake¶
クエリ¶
結果¶
NONATOMIC 動作のプロシージャの COMMIT¶
Redshiftの NONATOMIC の動作は、セッションパラメーター AUTOCOMMIT をtrueにセットすることでSnowflakeでエミュレートされます。
AUTOCOMMITセッションパラメーターは、SnowConvert AIによって真であると仮定されるため、NONATOMICプロシージャ内のCOMMITステートメントはそのままです。
Redshift¶
クエリ¶
結果¶
Snowflake¶
クエリ¶
結果¶
既知の問題¶
1.ネストされたプロシージャ呼び出しの内側の COMMIT
Redshiftでは、 COMMIT ステートメントがネストされたプロシージャ呼び出しで指定されると、コマンドは現在のスコープと親スコープで以前のステートメントからの保留中の作業をすべてコミットします。親スコープアクションのコミットはSnowflakeではサポートされていません。このケースが検出されると、 FDM が生成されます。
Redshift¶
クエリ¶
Snowflake¶
クエリ¶
既知の問題¶
既知の問題はありません。
関連 EWIs¶
SSC-FDM-RS0006: 呼び出されたプロシージャに COMMIT/ROLLBACK の使用が含まれています。子スコープで現在のトランザクションを変更することはSnowflakeではサポートされていません。
ROLLBACK¶
説明¶
現在のトランザクションを停止し、そのトランザクションによって行われたすべての更新を破棄します。(Redshift SQL 言語リファレンス ROLLBACK)
文法構文
サンプルソースパターン¶
セットアップデータ¶
Redshift¶
クエリ¶
Snowflake¶
クエリ¶
TRANSACTION キーワードを使用した ROLLBACK¶
Snowflakeでは TRANSACTION キーワードはサポートされていません。しかし、機能には影響しないため、削除されるだけです。
Redshift¶
クエリ¶
Snowflake¶
クエリ¶
デフォルトのトランザクション動作プロシージャの ROLLBACK (NONATOMIC 句なし)¶
To avoid out of scope transaction exceptions in Snowflake, the usages of ROLLBACK will be matched with BEGIN TRANSACTION.
プロシージャ内に複数のトランザクション制御ステートメントが存在する場合、Redshiftのトランザクション動作をエミュレートするために、それぞれのステートメントの後に複数の BEGIN TRANSACTION ステートメントが生成されます。
Redshift¶
クエリ¶
結果¶
Snowflake¶
クエリ¶
結果¶
NONATOMIC 動作のプロシージャの ROLLBACK¶
Redshiftの NONATOMIC の動作は、セッションパラメーター AUTOCOMMIT をtrueにセットすることでSnowflakeでエミュレートされます。
AUTOCOMMITセッションパラメーターは、SnowConvert AIによって真であると仮定されるため、NONATOMICプロシージャ内のROLLBACKステートメントはそのままです。
Redshift¶
クエリ¶
結果¶
Snowflake¶
クエリ¶
結果¶
既知の問題¶
1.ネストされたプロシージャ呼び出しの内側の ROLLBACK
Redshiftでは、 ROLLBACK ステートメントがネストされたプロシージャ呼び出しで指定されると、コマンドは現在のスコープと親スコープで以前のステートメントからの保留中の作業をすべてコミットします。親スコープアクションのコミットはSnowflakeではサポートされていません。このケースが検出されると、 FDM が生成されます。
Redshift¶
クエリ¶
Snowflake¶
クエリ¶
2.DDL ステートメントの ROLLBACK
In Snowflake, DDL statements perform an implicit commit whenever they are executed inside a procedure, making effective all the work before executing the DDL as well as the DDL itself. This causes the ROLLBACK statement to not be able to discard any changes before that point, this issue will be informed using an FDM.
Redshift¶
クエリ¶
Snowflake¶
クエリ¶
既知の問題¶
既知の問題はありません。
関連 EWIs¶
SSC-FDM-RS0006: 呼び出されたプロシージャに COMMIT/ROLLBACK の使用が含まれています。子スコープで現在のトランザクションを変更することはSnowflakeではサポートされていません。
SSC-FDM-RS0007: DDL statements perform an automatic COMMIT in Snowflake. ROLLBACK will not undo DDL-committed changes.
TRUNCATE¶
説明¶
テーブルスキャンを行わずにテーブルから全ての行を削除します(Redshift SQL 言語リファレンス TRUNCATE)
文法構文
サンプルソースパターン¶
セットアップデータ¶
Redshift¶
クエリ¶
Snowflake¶
クエリ¶
デフォルトのトランザクション動作プロシージャの TRUNCATE (NONATOMIC 句なし)¶
TRUNCATE ステートメントは、実行されたトランザクションを自動的にコミットするため、それを使用すると、Snowflakeで COMMIT ステートメントが生成され、この動作をエミュレートします。
COMMIT ステートメントが生成されるので、同じ BEGIN TRANSACTION ステートメント生成が TRUNCATE にも適用されます。詳細は COMMIT 翻訳仕様を確認してください。
Redshift¶
クエリ¶
結果¶
Snowflake¶
クエリ¶
結果¶
NONATOMIC 動作のプロシージャの TRUNCATE¶
Redshiftの NONATOMIC の動作は、セッションパラメーター AUTOCOMMIT をtrueにセットすることでSnowflakeでエミュレートされます。
Since the AUTOCOMMIT session parameter is assumed to be true by SnowConvert AI, the TRUNCATE statement inside NONATOMIC procedures is left as is, there is no need to generate a COMMIT statement because every statement is automatically committed when executed.
Redshift¶
クエリ¶
結果¶
Snowflake¶
クエリ¶
結果¶
既知の問題¶
1.ネストされたプロシージャ呼び出しの内側の TRUNCATE
Redshiftでは、 COMMIT ステートメントがネストされたプロシージャ呼び出しで指定されると、コマンドは現在のスコープと親スコープで以前のステートメントからの保留中の作業をすべてコミットします。親スコープアクションのコミットはSnowflakeではサポートされていません。このケースが検出されると、 FDM が生成されます。
Redshift¶
クエリ¶
Snowflake¶
クエリ¶
既知の問題¶
既知の問題はありません。
関連 EWIs¶
SSC-FDM-RS0006: 呼び出されたプロシージャに COMMIT/ROLLBACK の使用が含まれています。子スコープで現在のトランザクションを変更することはSnowflakeではサポートされていません。
CONDITIONS¶
CASE¶
説明¶
Redshiftの
CASEステートメントを使用すると、条件に基づいて値を返すことができ、クエリで条件付きロジックを実現できます。単純と検索の2種類があります。(Redshift SQL 言語リファレンス条件: ケース)。
単純なケース¶
単純な CASE ステートメントは、オペランドの等号に基づく条件実行を提供します。
注意
単純なケースは Snowflake によって完全にサポートされています。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
検索されたケース¶
注意
検索されたケースは Snowflake によって完全にサポートされています。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
ELSE なしの CASE¶
Redshiftでは、 CASE 式が実行され、検証された条件がどれも満たされず、 ELSE が定義されていない場合、例外「CASE NOT FOUND」がトリガーされます。Snowflakeでは、コードは実行されますが、結果は返されません。このシナリオでSnowflakeの同じ機能を維持するために、同じ名前の例外が宣言され、 CASE の条件が満たされない場合に実行されます。
注意
ElseなしのCaseは Snowflake によって完全にサポートされています。
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
IF¶
説明¶
このステートメントを使用すると、特定の条件に基づいて意思決定を行うことができます。(Redshift SQL 言語リファレンス条件: IF)。
SnowConvert AIは、条件に括弧を追加し、キーワードELSIFをELSEIFに変更します。Redshiftは条件に括弧を必要とせず、ELSIFがキーワードだからです。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
LOOPS¶
説明¶
これらのステートメントは、指定された条件までコードのブロックを繰り返すために使用されます。(Redshift SQL 言語リファレンスループ)。
CONTINUE¶
説明¶
CONTINUE 条件がtrueの場合、ループは実行を継続でき、falseの場合はループを停止します。(Redshift SQL 言語リファレンス条件: CONTINUE)。
警告
CONTINUE は Snowflake によって部分的にサポートされています。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
結果¶
コンソール出力 |
|---|
1 |
2 |
3 |
4 |
6 |
7 |
出力コード:¶
Snowflake¶
結果¶
コンソール出力 |
|---|
1 |
2 |
3 |
4 |
6 |
7 |
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
EXIT¶
説明¶
WHEN ステートメントで定義された条件がtrueになった時にループ実行を停止します(Redshift SQL 言語リファレンス条件: EXIT)。
警告
EXIT は Snowflake によって部分的にサポートされています。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
FOR¶
文法構文¶
整数バリアント
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
SSC-EWI-PG0006 :ラベルを使用した変数の参照は Snowflakeではサポートされていません。
LOOP¶
説明¶
単純ループは、EXIT または RETURN ステートメントによって終了するまで、無条件に繰り返されるループを定義します。(Redshift SQL 言語リファレンス条件: 単純ループ)。
警告
単純ループは Snowflake によって部分的にサポートされています。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
WHILE¶
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
CURSORS¶
CLOSE CURSOR¶
説明¶
開いているカーソルに関連付けられているすべての空きリソースを閉じます。(Redshift SQL 言語リファレンスClose Cursor)。
注意
この構文はSnowflakeで完全にサポートされています。
文法構文¶
サンプルソースパターン¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
FETCH CURSOR¶
説明¶
カーソルを使用して行を取得します。(Redshift SQL 言語リファレンスFetch)
変換情報
サンプルソースパターン¶
セットアップデータ¶
Redshift¶
クエリ¶
Snowflake¶
クエリ¶
Fetch into¶
Redshiftの FETCH intoステートメントは、Snowflakeでも完全に同等です
Redshift¶
クエリ¶
結果¶
Snowflake¶
クエリ¶
結果¶
既知の問題¶
1.ターゲット変数なしのFetchはサポートされていません
Snowflakeでは、 FETCH ステートメントで、取得した行の値を格納する変数を INTO 句で指定する必要があります。INTO 句のないコードで FETCH ステートメントが見つかると、 EWI が生成されます。
入力コード:
出力コード:
既知の問題¶
既知の問題はありません。
関連 EWIs¶
SSC-EWI-PG0015 :ターゲット変数を使用しないフェッチカーソルはSnowflakeではサポートされていません。
OPEN CURSOR¶
説明¶
カーソルを使用して行を取得する前に、カーソルを開く必要があります。(Redshift SQL 言語リファレンスカーソルを開く)。
注意
この構文はSnowflakeで完全にサポートされています。
文法構文¶
サンプルソースパターン¶
セットアップデータ¶
Redshift¶
クエリ¶
Snowflake¶
クエリ¶
引数なしでカーソルを開く¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
引数でカーソルを開く¶
Cursor arguments have to be bound per each one of its uses, SnowConvert AI will generate the bindings, as well as reorder and repeat the passed values to the OPEN statement as needed to satisfy the bindings.
Redshift¶
クエリ¶
結果¶
Snowflake¶
クエリ¶
結果¶
プロシージャパラメーターまたはローカル変数でカーソルを開く¶
The procedure parameters or local variables have to be bound per each one of its uses in the cursor query, SnowConvert AI will generate the bindings and add the parameter or variable names to the OPEN statement, even if the cursor originally had no parameters.
Redshift¶
クエリ¶
結果¶
Snowflake¶
クエリ¶
結果¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
DECLARE CURSOR¶
説明¶
新しいカーソルを定義します。カーソルを使用して、大きなクエリの結果セットから一度に数行を取得します。(Redshift SQL 言語リファレンスカーソル宣言)。
注意
この構文はSnowflakeで完全にサポートされています。
文法構文¶
サンプルソースパターン¶
入力コード:¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
DECLARE REFCURSOR¶
説明¶
refcursorデータ型は、単にカーソルへの参照を保持します。カーソル変数を作成するには、refcursor型の変数として宣言します
注意
Refcursor宣言は Snowflake によって完全にサポートされています。
文法構文¶
Snowflakeは REFCURSOR データ型をサポートしていないため、 REFCURSOR 変数を RESULTSET 型に変換することでその機能を複製します。REFCURSOR を開くために使用されたクエリは、 RESULTSET 変数に割り当てられます。その後、新しいカーソルが作成され、 RESULTSET 変数にリンクされます。さらに、カーソルロジック内の元の REFCURSOR の参照はすべて新しいカーソルを使用するように更新され、元の機能が複製されます。
サンプルソースパターン¶
ケース:1回の使用¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
ケース: 動的Sqlによるカーソル ¶
入力コード:¶
Redshift¶
出力コード:¶
Redshift¶
ケース: 複数の使用: ¶
入力コード:¶
Redshift¶
出力コード:¶
Snowflake¶
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。