- DatabaseID、TVMNameの列ペアは、DBC.TVMテーブル内で固有でなければなりません。DBC.TVMの行を表示するにはDBC.Tables2ビューを使用します。
- database_name.routine_name(parameter_list)のルーチンのシグネチャは固有でなければなりません。
UDF、UDM、およびUDTは、そのSPECIFIC名および関連したルーチンのシグネチャが異なる限り、同じSQL名を持つことができます。UDTの場合、SPECIFIC名は、UDTそのものではなく(これはSPECIFIC名を持たない)、UDT定義内のいずれかのメソッド シグネチャのSPECIFIC名のことを指します。
- キャスト
- 順序付け
- データ変換
Database IDの列の項目が常に同じになることを意味します。名前が固有であるかどうかはTVMName列の値にのみ依存しています。
UDTおよびUDMのTVMNameエントリ
次は、UDTとUDMのTVMNameエントリを示しています。
CREATE TYPEリクエストによって作成されるUDTには、指定したUDT名に基づいた、システム生成されたSPECIFIC名があります。オブジェクト名の詳細については、<Teradata Vantage™ - SQLの基本、B035-1141>を参照してください。
許容文字数を超えるUDT名は、データベースによって切り捨てられてSPECIFIC名が生成されます。
CREATE TYPE文を実行すると、システムは対応するUDFを自動生成し、UDTインスタンスを取得します。
名前の重複を回避するために、UDT、UDM、またはUDFのSPECIFIC名は固有でなければなりません。
外部ルーチンの種類 | 特定名 |
---|---|
UDT | 常にそのUDT名。 |
|
ユーザー定義。 STRUCTURED型に関してこのルールに以下の2つの例外があります。
これらのSPECIFIC名は常に、操作するSTRUCTURED型属性の名前と同じになります。 UDMのSPECIFIC名の定義は、その関連UDT内のそのシグネチャの中で行なわれます。CREATE METHOD文の中で定義されるのではないということに注意する必要があります。 |
- 作成するすべてのUDTに関して、システムは次のシグネチャを持つUDFを生成します: SYSUDTLIB.UDT_Name()。
それ以外のUDFがこのシグネチャを持つことはできません。
- UDMを作成するとシステムはこれをUDFとして扱い、その最初の引数のデータ型が、このUDMの定義されているUDTと同じであるとします。
たとえば、circleというUDTの上に定義されるarea()というUDMであれば、そのシグネチャはSYSUDTLIB.area(circle)になります。したがって、それ以外のUDFはこれと同じシグネチャを持てないことになります。
- UDTと、パラメータを持たないSYSUDTLIB UDFとが、同じ名前であってはなりません。
- STRUCTURED型UDTのメソッドのシグネチャと、そのデータ型のいずれかの属性のオブザーバーまたはミュテーター メソッドのシグネチャが一致する場合、そのメソッドとその属性の名前が同じであってはなりません。
作成するそれぞれのUDTごとにデータ変換グループを定義する必要があります。新しいDISTINCT型UDTを作成するとデータ変換グループがシステムによって自動的に作成されるため、システム生成の変換を削除してからでなければ明示的な変換グループを追加で作成することはできません。UDTデータ変換グループの名前は固有にする必要がないため、すべての変換グループに同じ名前を使うこともできます。
変換グループの名前はDBC.UDTTransformに格納されます。
- STRUCTURED型属性のために自動生成されたオブザーバー メソッドとミュテーター メソッド。
- CREATE TYPE文、ALTER TYPE文、またはCREATE METHOD文によって作成されたインスタンス メソッドとコンストラクタ メソッド(コーダーがSPECIFICメソッド名を指定しない場合)。
UDT名および属性名に基づいて最大28文字のSPECIFIC名が生成されます。
次の要素を指定の順序でつなぎあわせることによってSPECIFIC名が形成されます。
- UDT名の最初の8文字。
- 下線文字(_)。
- オブザーバ属性名、ミュテーター属性名、インスタンス メソッド名、またはコンストラクタ メソッド名の最初の10文字(必要に応じて)。
- 下線文字(_)。
- オブザーバー メソッド名、ミュテーター メソッド名、インスタンス メソッド名、またはコンストラクタ メソッド名に割り当てられた、ルーチンIDの最後の8つの16進数値。
- 必要に応じて、文字シーケンスが付加されます(オブザーバは_O、ミュテーターは_M、インスタンスは_R、コンストラクタは_C)。
30文字になるまで、残りの文字が空白文字(スペース)で埋められます。