STRUCTURED型UDTの概念は、CおよびC++プログラミング言語で定義されているstructureコンストラクタとよく似ています。DISTINCT型UDTには、UDTと基礎となる事前定義データ型とに1対1の対応関係がありますが、それとは対照的に、STRUCTURED型UDTは名前付き属性の集まりであり(1つのUDT定義につき512個まで、1つのUDTにつきおよそ合計4,000個の属性に制限されます。それらは、個別のフィールドとしてではなくカプセル化された単位として扱うことができます。STRUCTURED型UDTに512以上の属性を追加する場合の次善策を参照してください。
STRUCTURED型UDTの属性には、事前定義データ型、DISTINCT型UDT、STRUCTURED型UDTのどれでも含めることができます。STRUCTURED型UDTのカプセル化では、データ型内部の属性を一部または全部変更するだけでよく、そのデータ型のデータにアクセスするアプリケーションを変更する必要はありません。
- キャスト(CREATE CASTとREPLACE CASTを参照)。
- 順序付け(CREATE ORDERINGおよびREPLACE ORDERINGを参照)。
- 変換(CREATE TRANSFORMおよびREPLACE TRANSFORMを参照)。
- 以下のタイプのインスタンス メソッド。
- オブザーバー メソッド
- ミュテーター メソッド
システム生成のオブザーバー メソッドとミュテーター メソッドを参照してください。
- コンストラクタ メソッド(CREATE METHOD、システム生成コンストラクタ関数、およびコンストラクタ メソッドを参照)。
- オブザーバー
- ミュテーター
これら2つのタイプのインスタンス メソッドを使用して、属性から情報を取得したり(オブザーバー)、属性内の情報を更新したり(ミュテーター)することができます。
ユーザー定義メソッドを削除または置き換えることができます。ALTER TYPEとREPLACE METHODを参照してください。システム生成メソッドは、STRUCTURED型UDT属性の操作に不可欠な固有の構成要素であるため、削除することも置換することもできません。メソッドを削除するには、ALTER TYPE文に適切なDROP METHOD句を指定して実行することが必要です。同様に、ALTER METHOD文で行なえる処理は、メソッドの保護モードのみの操作、またはメソッドの再コンパイルと再リンクです。
ALTER TYPE文を使用すると、既存のSTRUCTURED型UDTへ新しい属性を追加したり、既存の属性を削除したりできます。
属性を削除すると、システムは削除した各属性に関連付けられているオブザーバー メソッドとミュテーター メソッドも削除します。
属性を追加すると、システムは追加した各属性をサポートする適切なオブザーバー メソッドとミュテーター メソッドを自動的に生成します。
Teradata Databaseは、STRUCTURED型UDTの継承をサポートしていません。