InterBase クイック スタート:Part V - ストアド プロシージャ
提供: InterBase
InterBase クイック スタート:Part V - 応用トピック へ戻る
ストアド プロシージャは、データベースのメタデータに保存されるプログラムです。アプリケーション(IBConsole を含む)は、タスクを実行するために、ストアド プロシージャを呼び出すことができます。ストアド プロシージャの詳細については、「ストアド プロシージャでの作業」を参照してください。
ストアド プロシージャには、次の 2 種類があります:
- 選択プロシージャ: アプリケーションは、
SELECT
文の中で、テーブルやビューの代わりに、選択プロシージャを使用することができます。選択プロシージャは、1 つまたは複数の値(出力パラメータ)かエラー結果を返すよう、定義されていなければなりません。 選択プロシージャは複数の行を返すことができるため、呼び出し側のプログラムには、テーブルかビューとして表示されます。 - 実行可能プロシージャ: アプリケーションは、
EXECUTE PROCEDURE
文で直接、実行可能プロシージャを呼び出すことができます。実行可能プロシージャは、さまざまなタスクを実行することができ、呼び出し側のプログラムに値を返すことができます。
CREATE PROCEDURE
構文は、プロシージャのこの両タイプに適用することができます。違いは、プロシージャをどのように記述するかと、どのような意図で使用するか、です。
ストアド プロシージャの構文
CREATE PROCEDURE
文は、ヘッダーと本体があります。
ヘッダーには次のものが含まれます:
- ストアド プロシージャの名前。そのデータベース内のプロジェクト、ビュー、テーブル名においては、一意で識別できなければなりません。
- 入力パラメータとそのデータ型(任意のリスト)。プロシージャがこれを呼び出し側のプログラムから受け取ります。
- プロシージャが、呼び出し側プログラムに値を返す場合:
RETURNS
キーワード、出力パラメータとデータ型のリストが続きます。
本体には次のものが含まれます:
- ローカル変数およびそのデータ型(任意のリスト)
- InterBase プロシージャやトリガの言語における文のブロックは、
BEGIN
とEND
キーワードで括られます。 ブロックはネストすることができます。プロシージャの簡略化した構文は次の通り:
CREATE PROCEDURE procedure_name [(input_var1 data TYPE[,input_var2 data TYPE …])]
[returns (output_var1 data TYPE[, output_var2 data TYPE …])] AS
BEGIN
/*
* statements in InterBase
* procedure and trigger language
*/
END
トリガ定義と同様、SQL スクリプト、埋め込み SQL、および、コマンドライン isql
でのプロシージャ定義では、セミコロン以外に終端子を設定する SET TERM
文が前にこなければなりません。 プロシージャ コードの終わりに、再び SET TERM
文を使用して、セミコロンに終端子を戻す必要があります。