メソッドの呼び出し
システム生成による監視および変更メソッドの両方、さらにユーザー定義メソッドも、 二重ドット演算子を使って呼び出されます。
- subject-expression
- ユーザー定義構造化タイプである静的結果タイプを持つ式。
- method-name
- 修飾なしのメソッド名。 subject-expression の静的タイプまたはそのスーパータイプのいずれかに、 指定した名前を持つメソッドが入っている必要があります。
- (expression,...)
- 括弧内に method-name の引数を指定します。 引数がないことを示すときには、括弧内を空にしておくことができます。 特定のメソッドを解決するときに、subject-expression の静的タイプに基づき、 method-name と、指定した引数の式のデータ・タイプを使用します。
メソッド呼び出しに使う二重ドット演算子は、優先順位が高い順に左から右へ列挙される挿入演算子です。
例えば、以下の 2 つの式は同じことを意味します。
a..b..c + x..y..z および
((a..b)..c) + ((x..y)..z)メソッドにサブジェクト以外のパラメーターがない場合、括弧があってもなくても呼び出すことができます。
例えば、以下の 2 つの式は同じことを意味します。
point1..x
point1..x()メソッド呼び出しの NULL サブジェクトは、次のように扱われます。
- システム生成の変更メソッドが NULL サブジェクトで呼び出される場合、 エラーになります (SQLSTATE 2202D)。
- システム生成の変更メソッド以外のメソッドが NULL サブジェクトで呼び出される場合、 そのメソッドは実行されず、結果は NULL になります。 この規則は、SELF AS RESULT を指定したユーザー定義メソッドにも当てはまります。
データベース・オブジェクト (パッケージ、ビュー、またはトリガーなど) を作成する場合、 それぞれのメソッド呼び出しのための最適な方法を 見つけられます。
注: 定義した WITH FUNCTION ACCESS タイプのメソッドは、
通常の関数表記を使用して呼び出すこともできます。
関数解決では、候補となる関数として、すべての関数だけでなく、
関数アクセスのあるメソッドも考慮します。
ただし、メソッド呼び出しを使用して関数を呼び出すことはできません。
メソッド解決では、候補となるメソッドとして、
すべてのメソッドを考慮しますが、関数については考慮しません。
適切な関数またはメソッドの解決に失敗すると、エラーになります (SQLSTATE 42884)。
例
- 二重ドット演算子を使用して、AREA というメソッドを呼び出します。
構造化タイプ CIRCLE の列 CIRCLE_COL をもった RINGS という表が存在するとします。
また、CIRCLE タイプのために、メソッド AREA が、
AREA() RETURNS DOUBLEとしてあらかじめ定義されているとします。SELECT CIRCLE_COL..AREA() FROM RINGS
