埋め込みSQLの構成要素

データビューエディタ > 埋め込みSQL

埋め込みSQL タスクを作成する

埋め込みSQLタスクを作成するには以下のようにします。

  1. [タスク環境]メニューから[SQL コマンド]を選択します。[SQL コマンド]ダイアログが表示されます。

  2. [データベース]欄から[データベース一覧]にズームします。

  3. SQL 文を実行するデータベースを選択します。

SQL コマンドの動作について

SQL 文はデータベースによってタスク開始時に実行されます。この段階でエラーが発生すると、メッセージとともにタスクが終了します。

SQLコマンドを利用して、一括更新、一括削除、DDL文、PL/SQL ブロックを実行できます。

SQL コマンドには、以前にDBMS の各機能により開発してコンパイルした、プロシージャ(ストアドプロシジャ)を指定することができます。そのようなプロシージャ名をSQLコマンドとして指定した場合、該当するデータベースプロシージャはRDBMS によって呼び出され、実行されます。これらのストアドプロシジャは、一般のSQL コマンドと同じように使用できます。埋め込みSQL の構成に関する前述の規則はいずれも、ストアドプロシジャにも適用されます。

ストアドプロシジャを実行する

ストアドプロシジャを使用するには、次の形式で予約語「EXEC」を指定します。

EXEC procedure-name parameters

プロシジャに複数のパラメータを使用することができる場合、パラメータをカンマで区切ります。プロシジャの本文がSELECT文になっている場合、そのプロシジャは通常のSELECT文のように扱ってください。つまり、[オプション/APG]を実行してください。ストアドプロシジャ内では、以下に示すAPGの3つの点に注意する必要があります。

MS-SQL Serverでのストアドプロシジャ

戻り値の指定

MS-SQL Serverでのストアドプロシジャで戻り値をサポートします。

これを実現するには、[SQLコマンド]ダイアログで以下の構文を含むステートメントを定義してください。

?=

例えば以下のように指定します。

EXEC ? = proc_name

また、[戻り値]欄に変数項目を指定する必要があります。

戻り値がBOOLEANか、ステートメント上で指定された構文または戻り値が含まれていない場合、Magicはストアドプロシジャのステータス(成功/失敗)の表示のみを行います。

結果セットのROWSET

ダイレクトSQL内でどのSELECTステートメントが戻るかを指定することができます。

これを実現するには、[SQLコマンド]ダイアログで以下の構文をSQLステートメントに追加する必要があります。

/*=== ROWSET=n ===*/  

nは、戻り値として返したいSELECTステートメントの番号

例えば以下のように指定します。

/*=== ROWSET=5 ===*/  

この場合、5番目の結果セットが返ります。

現存していないROW-IDを指定するとエラーメッセージが返ります。

Magicでは、SQL Serverのストアドプロシジャ内のDSQLステートメントでカーソルを使用することができます。また、結果セットを戻すDSQLステートメントでのカーソルの使用をサポートしています。

これは、ダイレクトSQLステートメントに以下の構文を追加することで可能になります。

/*===CURSOR=Y ===*/

明示的なSQL

Magicは、埋め込みSQLやタスク内のDB SQL Where句を使用することで明示的なSQLを記述することができます。作成した構文は、ゲートウェイにそのまま送られ、追加もされずバインドされます。この方法で作成された全てのステートメントは、ANSI形式でデータベースに送られます。Unicode形式は、結果としてSQLタスクに戻される値でのみサポートされます。

DB2 UDBのストアドプロシジャ

Magicは、SELECTステートメントやIN/OUTパラメータ、または両方を持つDB2ストアドプロシジャをサポートします。APGボタンを使用すると、作成された変数項目は最初にOUT/INOUTパラメータが、次にすべての既存のSELECTステートメントの結果カラムの内容が定義されます。

参照