関数、メソッド、およびプロシージャーの指定子
このトピックでは、モジュール内に定義されていない関数、メソッド、およびプロシージャーを一意的に識別するために使用する構文フラグメントについて説明します。
関数指定子
関数指定子は、単一の関数を一意的に識別します。 関数指定子は通常、関数の DDL ステートメント (DROP または ALTER など) で使用されます。 関数指定子は、モジュール関数を指定するものであってはなりません (SQLSTATE 42883)。
- FUNCTION 関数名
- 特定の関数を指定します。 function-name という名前の関数インスタンスがスキーマ内に 1 つだけ存在している場合にのみ有効です。 指定する関数には、任意の数のパラメーターを定義できます。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターが、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、QUALIFIER プリコンパイル/BIND オプションによって、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 指定したスキーマまたは暗黙のスキーマにこの名前の関数が存在しない場合は、 エラー (SQLSTATE 42704) になります。 指定したスキーマまたは暗黙のスキーマに、この関数のインスタンスが複数存在する場合は、 エラー (SQLSTATE 42725) になります。
- FUNCTION 関数名 (データ・タイプ
- 関数を固有に指定する関数シグニチャーを指定します。 関数解決のアルゴリズムは使用されません。
- function-name
- 関数の名前を指定します。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターが、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、QUALIFIER プリコンパイル/BIND オプションによって、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 データ・タイプ
- 値は、CREATE FUNCTION ステートメント上で (対応する位置に) 指定されたデータ・タイプに一致していなければなりません。 データ・タイプの数、およびデータ・タイプを論理的に連結した値が、
特定の関数インスタンスを識別するのに使用されます。
data-type が修飾なしの場合は、SQL パス上でスキーマを検索してタイプ名が決定されます。 REFERENCE タイプに指定するデータ・タイプ名にも同様の規則が当てはまります。
パラメーター化データ・タイプの長さ、精度、または位取りを指定する必要はありません。 空の括弧をコーディングすることによって、 一致データ・タイプの検索時にそれらの属性を無視するように指定することができます。
FLOAT() は、パラメーター値によって異なるデータ・タイプ (REAL または DOUBLE) を表すので、使用できません (SQLSTATE 42601)。
長さ、精度、または位取りをコーディングする場合、 その値は、CREATE FUNCTION ステートメントで指定された値と完全に一致していなければなりません。 文字ストリングおよびグラフィック・ストリングのデータ・タイプに対して長さが指定されている場合、その長さ属性のストリング単位は、CREATE FUNCTION ステートメントで指定されたものと完全に一致していなければなりません。
0 < n < 25 は REAL を意味し、24 < n < 54 は DOUBLE を意味するので、FLOAT(n) のタイプは、n に定義された値と一致している必要はありません。 マッチングは、タイプが REAL か DOUBLE かに基づいて行われます。
指定したスキーマまたは暗黙のスキーマに、指定したシグニチャーを持つ関数がない場合は、 エラー (SQLSTATE 42883) になります。
- SPECIFIC FUNCTION 特定名
- 関数の作成時に指定された名前、またはデフォルト値として与えられた名前を使用して、 特定のユーザー定義関数を指定します。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターが、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、QUALIFIER プリコンパイル/BIND オプションによって、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 specific-name (特定名) は、 指定したスキーマまたは暗黙のスキーマの特定関数のインスタンスを指定していなければなりません。 そうでない場合、エラー (SQLSTATE 42704) になります。
メソッド指定子
メソッド指定子は、単一のメソッドを一意的に識別します。 一般的にメソッド指定子は、メソッドの DDL ステートメント (DROP または ALTER など) で使用されます。
- METHOD メソッド名
- 特定のメソッドを指定します。 type-name というサブジェクト・タイプの method-name という名前の メソッド・インスタンスが 1 つだけ存在している場合にのみ有効です。 このように指定されたメソッドには、任意の数のパラメーターを定義できます。 タイプに、指定された名前のメソッドが存在しない場合は、 エラーが戻されます (SQLSTATE 42704)。 タイプに、そのメソッドのインスタンスが複数存在する場合も、 エラーが戻されます (SQLSTATE 42725)。
- METHOD method-name (データ・タイプ
- メソッドを一意に指定するメソッド・シグニチャーを指定します。 メソッド解決のアルゴリズムは使用されません。
- メソッド名
- type-name タイプのメソッドの名前を指定します。 データ・タイプ
- 値は、
CREATE TYPE ステートメント上で (対応する位置に) 指定されたデータ・タイプと一致していなければなりません。 データ・タイプの数、およびデータ・タイプを論理的に連結した値が、
特定のメソッド・インスタンスを識別するのに使用されます。
data-type が修飾なしの場合は、SQL パス上でスキーマを検索してタイプ名が決定されます。 REFERENCE タイプに指定するデータ・タイプ名にも同様の規則が当てはまります。
パラメーター化データ・タイプの長さ、精度、または位取りを指定する必要はありません。 空の括弧をコーディングすることによって、 一致データ・タイプの検索時にそれらの属性を無視するように指定することができます。
FLOAT() は、パラメーター値によって異なるデータ・タイプ (REAL または DOUBLE) を表すので、使用できません (SQLSTATE 42601)。
長さ、精度、または位取りをコーディングする場合、 その値は、CREATE TYPE ステートメントで指定された値と完全に一致していなければなりません。 文字ストリングおよびグラフィック・ストリングのデータ・タイプに対して長さが指定されている場合、その長さ属性のストリング単位は、CREATE TYPE ステートメントで指定されたものと完全に一致していなければなりません。
0 < n < 25 は REAL を意味し、24 < n < 54 は DOUBLE を意味するので、FLOAT(n) のタイプは、n に定義された値と一致している必要はありません。 マッチングは、タイプが REAL か DOUBLE かに基づいて行われます。
指定したスキーマまたは暗黙のスキーマに、指定したシグニチャーを持つメソッドのタイプがない場合は、 エラー (SQLSTATE 42883) になります。
- FOR タイプ名
- 指定されたメソッドを関連付けるタイプを指定します。 ここで指定される名前は、 カタログに既に記述されているタイプを示すものでなければなりません (SQLSTATE 42704)。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターが、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、QUALIFIER プリコンパイル/BIND オプションによって、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。
- SPECIFIC METHOD 特定名
- メソッドの作成時に指定された名前か、デフォルト値として与えられた名前を使用して、 特定のメソッドを識別します。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターが、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、QUALIFIER プリコンパイル/BIND オプションによって、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 specific-name (特定名) は、 指定したスキーマまたは暗黙のスキーマの特定のメソッド・インスタンスを指定していなければなりません。 そうでない場合、エラー (SQLSTATE 42704) になります。
プロシージャー指定子
プロシージャー指定子は、単一のプロシージャーを一意的に識別します。 プロシージャー指定子は通常、プロシージャーの DDL ステートメント (DROP または ALTER など) で使用されます。 プロシージャー指定子は、モジュール・プロシージャーを指定するものであってはなりません (SQLSTATE 42883)。
- PROCEDURE プロシージャー名
- 特定のプロシージャーを指定します。 procedure-name という名前のプロシージャー・インスタンスが スキーマ内に 1 つだけ存在している場合にのみ有効です。 指定するプロシージャーには、任意の数のパラメーターを定義できます。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターが、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、QUALIFIER プリコンパイル/BIND オプションによって、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 指定したスキーマまたは暗黙のスキーマに該当する名前のプロシージャーが存在しない場合は、 エラーが戻されます (SQLSTATE 42704)。 指定したスキーマまたは暗黙のスキーマに、このプロシージャーのインスタンスが複数存在する場合は、 エラー (SQLSTATE 42725) になります。
- PROCEDURE プロシージャー名 (データ・タイプ
- プロシージャーを一意的に固有に識別するプロシージャー・シグニチャーを指定します。 プロシージャー解決のアルゴリズムは使用されません。
- procedure-name
- プロシージャーの名前を指定します。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターが、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、QUALIFIER プリコンパイル/BIND オプションによって、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 データ・タイプ
- 値は、CREATE PROCEDURE ステートメント上で (対応する位置に) 指定されたデータ・タイプに一致していなければなりません。 データ・タイプの数、およびデータ・タイプを論理的に連結した値が、
特定のプロシージャー・インスタンスを識別するのに使用されます。
data-type が修飾なしの場合は、SQL パス上でスキーマを検索してタイプ名が決定されます。 REFERENCE タイプに指定するデータ・タイプ名にも同様の規則が当てはまります。
パラメーター化データ・タイプの長さ、精度、または位取りを指定する必要はありません。 空の括弧をコーディングすることによって、 一致データ・タイプの検索時にそれらの属性を無視するように指定することができます。
FLOAT() は、パラメーター値によって異なるデータ・タイプ (REAL または DOUBLE) を表すので、使用できません (SQLSTATE 42601)。
長さ、精度、または位取りをコーディングする場合、 その値は、CREATE PROCEDURE ステートメントで指定された値と完全に一致していなければなりません。 文字ストリングおよびグラフィック・ストリングのデータ・タイプに対して長さが指定されている場合、その長さ属性のストリング単位は、CREATE PROCEDURE ステートメントで指定されたものと完全に一致していなければなりません。
0 < n < 25 は REAL を意味し、24 < n < 54 は DOUBLE を意味するので、FLOAT(n) のタイプは、n に定義された値と一致している必要はありません。 マッチングは、タイプが REAL か DOUBLE かに基づいて行われます。
指定したスキーマまたは暗黙のスキーマに、 指定したシグニチャーを持つプロシージャーがない場合は、 エラー (SQLSTATE 42883) になります。
- SPECIFIC PROCEDURE 特定名
- プロシージャーの作成時に指定された名前、 またはデフォルト値として与えられた名前を使用して、特定のプロシージャーを指定します。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターが、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、QUALIFIER プリコンパイル/BIND オプションによって、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 specific-name に指定される名前は、 指定したスキーマまたは暗黙のスキーマに含まれる特定プロシージャーのインスタンスを識別するものでなければなりません。 それ以外の名前が指定された場合は、エラーが戻されます (SQLSTATE 42704)。