InterBase クイック スタート:Part V - ストアド プロシージャ

提供: InterBase

InterBase クイック スタート:Part V - 応用トピック へ戻る

ストアド プロシージャは、データベースのメタデータに保存されるプログラムです。アプリケーション(IBConsole を含む)は、タスクを実行するために、ストアド プロシージャを呼び出すことができます。ストアド プロシージャの詳細については、「ストアド プロシージャでの作業」を参照してください。

ストアド プロシージャには、次の 2 種類があります:

  • 選択プロシージャ: アプリケーションは、SELECT 文の中で、テーブルやビューの代わりに、選択プロシージャを使用することができます。選択プロシージャは、1 つまたは複数の値(出力パラメータ)かエラー結果を返すよう、定義されていなければなりません。 選択プロシージャは複数の行を返すことができるため、呼び出し側のプログラムには、テーブルかビューとして表示されます。
  • 実行可能プロシージャ: アプリケーションは、EXECUTE PROCEDURE 文で直接、実行可能プロシージャを呼び出すことができます。実行可能プロシージャは、さまざまなタスクを実行することができ、呼び出し側のプログラムに値を返すことができます。

CREATE PROCEDURE 構文は、プロシージャのこの両タイプに適用することができます。違いは、プロシージャをどのように記述するかと、どのような意図で使用するか、です。

ストアド プロシージャの構文

CREATE PROCEDURE 文は、ヘッダーと本体があります。

ヘッダーには次のものが含まれます:

  • ストアド プロシージャの名前。そのデータベース内のプロジェクト、ビュー、テーブル名においては、一意で識別できなければなりません。
  • 入力パラメータとそのデータ型(任意のリスト)。プロシージャがこれを呼び出し側のプログラムから受け取ります。
  • プロシージャが、呼び出し側プログラムに値を返す場合: RETURNS キーワード、出力パラメータとデータ型のリストが続きます。

本体には次のものが含まれます:

  • ローカル変数およびそのデータ型(任意のリスト)
  • InterBase プロシージャやトリガの言語における文のブロックは、BEGINEND キーワードで括られます。 ブロックはネストすることができます。プロシージャの簡略化した構文は次の通り:
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 文を使用して、セミコロンに終端子を戻す必要があります。

次は: