データ変換グループの目的は、終始一貫して、クライアントとデータベース プラットフォームとの間でUDTを透過的に渡すことにあります。この節では、クライアント ソフトウェアがUDTを処理する方法に関する重要な点をいくつか説明します。厳密には、UDTはクライアントに渡されません。UDTは事前定義データ型にデータ変換され、その事前定義された型のデータがクライアントに渡されます。
ここで説明する情報は、全体を網羅したものではありません。さまざまなクライアント ユーティリティがUDTを処理する方法の全容を理解するには、該当するTeradata Tools and Utilitiesユーザー資料を参照してください。
最初に理解すべきことは、Teradata Tools and UtilitiesはUDTを認識しないということです。クライアント ソフトウェアはUDT値を見ませんが、Teradataプラットフォーム上のUDTを表わす事前定義データ型の値は見ます。プラットフォームのUDTをクライアントの事前定義型にデータ変換する方法は、データ変換機能の開発者の裁量にすべて委ねられています。
- DISTINCT型のUDTの場合、基礎となる事前定義(固有)データを指定する必要があります。データベースはUDTとの間のすべての変換をデータ変換グループによって処理します。Teradata Tools and Utilitiesは、最終的に値がDISTINCT型のUDTに保存されることや、DISTINCT型のUDTから取得した値であることを認識しません。
- STRUCTURED型のUDTの場合、次の2つのオプションがあります。
- UDTのクライアント側での表現を、単一の事前定義データ型の1つのフィールドとして指定する。例えば、circleという名前のSTRUCTURED型UDTがあり、それぞれ事前定義のFLOATデータ型である3つの属性で構成されているとします。その属性は、以下のとおりです。
- circleの中心のx座標
- circleの中心のy座標
- circleの半径
1つ目のオプションで行なう場合には、3つの属性を1つのフィールドに組み合わせし、クライアント側のSTRUCTURED型UDTをcircle BYTE(24)として表現することになります。
データベースは、外部UDT表現と内部UDT表現の間での変換をユーザー定義のデータ変換によって処理します。
- UDTのクライアント側での表現を、3つの別個のフィールドとして指定する。 前述のcircleの例で考えた場合、それぞれが事前定義のFLOATデータ型である3つの別個のフィールドを、たとえば次のように指定することになります。
- x_coord FLOAT
- y_coord FLOAT
- radius FLOAT
次に、INSERTのVALUES句またはUPDATEのSET句にNEW式を使用して、Teradataプラットフォーム側でSTRUCTURED型のcircle UDTを構成します。詳細については、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。
たとえば、circle UDTの場合、この構文は以下のとおりです。
NEW circle(:x,:y,:r)
- UDTのクライアント側での表現を、単一の事前定義データ型の1つのフィールドとして指定する。
詳細は、該当するTeradata Tools and Utilitiesドキュメントを参照してください。