17.00 - 17.05 - メソッド名のオーバーロード - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

UDMでは、UDFが関数名のオーバーロードをサポートするのと同じ方法で、メソッド名のオーバーロードがサポートされています。つまり、名前は同じでも、それぞれが固有に区別されるような複数のメソッドを定義できます。

オーバーロードする名前は、CREATE TYPE文のMETHOD指定で、UDMを呼び出すために使用する名前として指定します。同じ名前の個々のUDMごとに、固有のCまたはC++関数を用意する必要があります。

固有メソッドの特徴

同じ名前の複数のメソッドがそれぞれ固有の関数であると見なされるのは、次の場合です。

  • パラメータの数が異なる。
  • パラメータのデータ型が互いに異なる。

    パラメータのデータ型が互いに異なる際のルールについては、オーバーロード関数のパラメータ型を参照してください。

CREATE TYPE文とCREATE METHOD文との関係

CREATE TYPE文中でMETHODキーワードの直後に指定した名前が、オーバーロードされる名前になります。

CREATE TYPE文中でMETHOD指定を使用してメソッド名をオーバーロードする場合、毎回次のものを指定する必要があります。

  • 固有関数の特徴を満たすパラメータ リスト
  • SPECIFIC句の名前として固有の名前

CREATE METHOD文を使用してオーバーロード メソッドをインストールする場合、毎回異なるCまたはC++関数を指定する必要があります。

オーバーロード メソッドの呼び出し

メソッドがオーバーロードされている場合にどのメソッドを呼び出すかを決めるためにTeradata Databaseで使用されるルールは、オーバーロードされているUDFをユーザーが呼び出す際にどの関数が呼び出されるかを決めるためにTeradata Databaseで使用されるルールと同じです。

詳細は、オーバーロード関数の呼び出しを参照してください。

メソッド名のオーバーロードの代替手段としてのTD_ANYTYPEパラメータの使用

TD_ANYTYPEパラメータを使用すると、パラメータの数が同じでデータ型が異なるルーチンをサポートするために必要になるオーバーロード メソッドの数を減らせます。TD_ANYTYPEパラメータは、すべてのシステム定義のデータ型またはユーザー定義型を受け入れることができるため、複数のデータ型に対応する単一のメソッドを作成できます。

詳細は、関数名のオーバーロードの代替手段としてのTD_ANYTYPEパラメータの使用を参照してください。