CREATE PROCEDURE

CREATE PROCEDURE ステートメントは、現行サーバーでプロシージャーを定義します。

定義できるプロシージャーのタイプは以下のとおりです。

  • 外部

    このタイプのプロシージャー・プログラムまたはサービス・プログラムは、C、COBOL、Java™ などの プログラミング言語で書かれます。 この外部実行ファイルは、現行サーバーで定義されているプロシージャーに より、プロシージャーの各種属性に基づいて参照されます。 CREATE PROCEDURE (外部)を参照してください。

  • SQL

    このタイプのプロシージャーは SQL のみで書かれます。 プロシージャー本体は、プロシージャーの各種属性と一緒に現行サーバーで定義されます。 CREATE PROCEDURE (SQL)を参照してください。

パラメーターのデータ・タイプを選択する:Db2® for i 以外のプラットフォーム間でプロシージャーを移植可能にするために、以下のデータ・タイプは使用しないでください。これらは、異なるプラットフォームでは表記が異なる場合があります。

  • FLOAT。この代わりに、DOUBLE や REAL を使用すること。
  • NUMERIC。この代わりに、DECIMAL を使用すること。

パラメーターに AS LOCATOR を指定する: 値の代わりにロケーターを渡すことにより、プロシージャーとの間で受け渡しするバイト数を削減できることがあります。これは、パラメーターの値が非常に大きい場合に便利です。 AS LOCATOR 文節は、実際の値の代わりにパラメーターの値へのロケーターを渡すことを指定します。 AS LOCATOR は、LOB または XML データ・タイプまたは LOB または XML データ・タイプに基づく特殊タイプのパラメーターの場合に限り使用するようにしてください。

SQL プロシージャーには、AS LOCATOR は指定できません。

スキーマ内のプロシージャーの固有性を判別する: 現行サーバーでは、それぞれのプロシージャー・シグニチャーを固有のものにする必要があります。プロシージャーのシグニチャーは、修飾プロシージャー名と、パラメーター の数を組み合わせたものです (パラメーターのデータ・タイプはプロシージャーの シグニチャーの一部ではありません)。 これは、2 つの異なるスキーマに、名前が同じでパラメーター数も同じ であるプロシージャーが含まれていてもよいということを意味します。 ただし、1 つのスキーマに、名前もパラメーター数も同じである 2 つの プロシージャーを含めることはできません。

プロシージャーの特定名: 名前もスキーマも同一の (ただしパラメーター数は異なる) 複数のプロシージャーを定義するときは、特定名も指定することをお勧めします。プロシージャーの除去、プロシージャーに対する権限の認可または 取り消し、またはプロシージャーへのコメントの付加を行うときに、特定名 を使用して、そのプロシージャーを一意的に識別することができます。

特定名 を指定しなかった場合、その特定名は、プロシージャー名と同じ名前になります。 この特定名の関数やプロシージャーが既に存在している場合は、固有表名 の生成に使用される規則にほぼ準拠した固有名が生成されます。

プロシージャー内の特殊レジスター: 呼び出し元の特殊レジスターの設定は、呼び出し時にプロシージャーに継承され、戻り時に呼び出し元で復元されます。プロシージャー内で特殊レジスターが変更されることもありますが、それらの変更は呼び出し元には影響しません。