ストアドプロシジャは、アプリケーションロジックの一部をサーバで実行するための強力な方法です。ストアドプロシジャは、SQLコマンドタスクを使用して、Magic xpaから呼び出すことができます。
Magic xpaからCOMMITステートメントを送った場合は、すべてのコネクションがコミットされます。
ストアドプロシジャの構文はデータベースによって異なります。したがって、この機能を使用するか、アプリケーションの移植性を優先するかを選択しなければなりません。
MS-SQL Serverでのストアドプロシージャ
Magic xpaは、MS-SQL Serverに対するストアドプロシージャーで戻り値をサポートします。
これを実装するには、[SQLコマンド]ダイアログボックス内に入力するステートメントに、以下の構文を含めなければなりません。
? = |
例えば以下のように指定します。
EXEC?= proc_name |
[戻り値]欄にで変数項目を指定する必要があります。
戻り値が BOOLEAN か、ステートメントに上記の構文がや戻り値が含まれていない場合、Magic xpaはストアドプロシージャーのステータス(成功/失敗)を表示するだけです。
注意: |
出力が無い場合、ストアドプロシージャーは戻り値として空白を返します。このような場合、戻り値を取得するために、ストアドプロシージャーでダミーのSelectステートメントを定義してください。 |
Magic xpaでは、開発者が(SQLサーバで)どのSelectステートメントで戻り値を返すかを決めることができます。
これを実装するには、[SQLコマンド]ダイアログボックス内のSQLステートメントに以下の構文を追加する必要があります。
/*=== ROWSET=n ===*/ |
nは、戻したいSelectステートメントの番号を示しています。
例えば以下のように指定します。
例:/*=== ROWSET=5 ===*/ |
この場合、5番目の結果セットが返ります。
現存していないROW-IDを指定するとエラーメッセージが返ります。
Magic xpaでは、SQL Serverのストアドプロシジャ内のDSQLステートメントでカーソルを使用することができます。また、結果セットを戻すDSQLステートメントでのカーソルの使用をサポートしています。
これは、ダイレクトSQLステートメントに以下の構文を追加することで可能になります。
/*===CURSOR=Y ===*/ |
カーソルを参照してください。
Oracleでのストアドプロシージャー
INOUTまたはOUTパラメータがないプロシージャは、PL/ SQLブロックとして呼び出す必要があります。
begin procname (par1 int, par2 int); end; |
プロシージャに複数のパラメータを使用することができる場合、パラメータをカンマで区切ります。OracleパラメータがINOUTまたはOUTでない場合は、APGボタンを選択してからプロシージャを実行する必要があります。ストアドプロシジャにはOUTパラメータを入力しないでください。代わりに、プレイスホルダとしてカンマを使用します。プロシージャの終わりに句読点を追加しないでください。