17.00 - 17.05 - STRUCTURED型UDTの全機能の使用可能化 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

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

STRUCTURED型UDTを作成すると、システムは各STRUCTURED型のコンストラクタ関数をSYSUDTLIBデータベースに自動的に生成します。このコンストラクタ関数は、属性がデフォルト値に設定されたSTRUCTURED型インスタンスを返します。STRUCTURED型UDTのすべての属性のデフォルト値はnullです。

システムはこの機能を、CREATE FUNCTIONリクエストの実行によってではなく、ディクショナリ テーブルとの対話によって自動的に生成します。そのため、SHOW FUNCTIONリクエストを実行して、システム生成コンストラクタの作成テキストDDLをレポートすることはできません。

DISTINCT型UDTの場合とは異なり、システムがSTRUCTURED型UDTに対してキャスト、順序付け、またはデータ変換機能を自動的に生成することはありません。STRUCTURED型UDTのデフォルト機能STRUCTURED型UDTのデフォルトのキャスト機能STRUCTURED型UDTのデフォルトの順序付け機能STRUCTURED型UDTのデフォルトのデータ変換グループを参照してください。その代わりに、新しく作成されたSTRUCTURED型UDTの全機能を使用可能にするために、以下の表の「必須?」列が「はい」となっているすべての文を実行する必要があります。

機能 DDL文の定義 目的 必須?
STRUCTURED型UDTの定義。 CREATE TYPE (STRUCTURED形式) STRUCTURED型UDTの本体と属性を宣言します。 はい
コンストラクタ メソッドの定義。 CREATE METHODまたはCREATE FUNCTION STRUCTURED型UDTとともに使用するすべてのSQL呼び出しコンストラクタ メソッドを宣言します。

Teradata Databaseは、新しく作成したSTRUCTURED型UDTに対してコンストラクタ関数を自動的に生成します。システム生成コンストラクタ関数を参照してください。

いいえ
インスタンス メソッドの定義。 CREATE METHODおよびCREATE TYPE (STRUCTURED形式) STRUCTURED型UDTと関連付けるすべてのSQL呼び出しインスタンス メソッドを宣言します。

Teradata Databaseは、新しく作成したSTRUCTURED型UDTの各属性に対して、オブザーバーおよびミュテーター インスタンス メソッドを自動的に生成します。システム生成のオブザーバー メソッドとミュテーター メソッドを参照してください。

いいえ
STRUCTURED型UDT値の比較のための順序付けの定義。 CREATE ORDERING STRUCTURED型UDT値を他の値と比較するための順序付けルーチンとして使用するUDFまたはメソッドを登録します。 はい
CREATE ORDERINGによって参照される外部順序付けルーチンの宣言。
  • CREATE FUNCTION

    または

  • CREATE METHOD
CREATE ORDERING定義で参照される順序付けルーチンを宣言します。 はい
クライアント データ型とサーバー データ型の間での、UDTの双方向のデータ変換。 CREATE TRANSFORM クライアントとサーバーの間で双方向にSTRUCTURED型UDFを受け渡しするためのtosql()およびfromsql()データ変換ルーチンとして使用するUDFおよびUDFまたはメソッドを登録します。 はい
CREATE TRANSFORMによって参照される外部データ変換ルーチンの宣言。
  • CREATE FUNCTION

    または

  • CREATE METHOD
CREATE TRANSFORM定義で参照されるtosql()およびfromsql()外部ルーチンを宣言します。 はい
UDFまたはメソッド外部キャスト ルーチンの登録。 CREATE CAST 以下のキャストを実行するためのキャスト ルーチンとして使用するUDFまたはメソッドを登録します。
  • あるSTRUCTURED型UDTから別のSTRUCTURED型UDTへのキャスト。
  • STRUCTURED型UDTから事前定義データ型へのキャスト。
  • 事前定義データ型からSTRUCTURED型UDTへのキャスト。

STRUCTURED型UDTをテーブル列のデータ型として使用できるようにするためにキャスト機能の作成は必須ではありませんが、その型にキャストが定義されていない場合に、その列に対して実行できない操作があります。STRUCTURED型UDTのデフォルトのキャスト機能を参照してください。

全機能を実現するための最低要件は、UDTからfromsqlデータ変換ターゲット事前定義データ型にキャストする暗黙キャスト、およびtosqlデータ変換ソース データ型からUDTにキャストする暗黙キャストという、2つの暗黙キャストです。

はい
CREATE CASTによって参照される外部キャスト ルーチンの宣言。
  • CREATE FUNCTION

    または

  • CREATE METHOD
CREATE CAST文で参照される外部キャスト ルーチンを宣言します。 いいえ

この表にリストされているすべての必須機能を作成しないと、作成するSTRUCTURED型UDTには全機能が実現されません。また、そのデータ型を持つ値に対してサポートされていない操作は何も実行できません。その操作を実行しようとすると、リクエスト元にエラーが返されます。

現在使用しているSTRUCTURED型UDTのアプリケーションに追加機能が必要である場合は、インスタンス メソッドまたはコンストラクタ メソッドをCまたはC++言語で作成し、CREATE METHODリクエストを実行してSQL呼び出しメソッドを宣言し、そのメソッドをSTRUCTURED型UDTに関連付けることができます。STRUCTURED型UDTに対して複数のコンストラクタ メソッドを作成する方法の詳細については、コンストラクタ メソッドを参照してください。