[SYSUDTLIB.] udt_name [ attribute [...] ]
- SYSUDTLIB.
- すべてのUDTが作成されるデータベースの名前。
- udt_name
- CREATE TYPE文によって作成されたUDTの名前。
- attribute
- 適切なデータ型属性。
ANSI準拠
UDTは、ANSI SQL:2011に準拠しています。
UDTのタイプ
Teradata Databaseは、DISTINCT型UDTとSTRUCTURED型UDTをサポートします。
UDTタイプ | 説明 | 例 |
---|---|---|
DISTINCT型 | 事前定義された単一のデータ型に基づくUDT。INTEGERまたはVARCHARなど。 | euro という名前のDISTINCT型UDTがDECIMAL(8,2)データ型に基づいている場合、金額データを格納できます。 |
STRUCTURED型 | 属性と呼ばれる1つ以上のフィールドの集合。各属性は、事前定義データ型または他のUDT(入れ子がサポートされる)として定義されます。 | circleという名前のSTRUCTURED型UDTは、x軸、y軸、および半径属性から構成されます。 |
UDTは、LOB UDTまたは非LOB UDTとしてさらに分類できます。
UDT | 条件 | UDTの分類 |
---|---|---|
DISTINCT型 | 元となる事前定義データ型がCLOBまたはBLOBである | LOB UDT。 |
元となる事前定義データ型がLOBではない | 非LOB UDT。 | |
STRUCTURED型 | 少なくとも1つの属性のデータ型がCLOB、BLOB、またはLOB UDTである | LOB UDT。 |
LOBまたはLOB UDTデータ型の属性はない | 非LOB UDT。 |
DISTINCT型UDTおよびSTRUCTURED型UDTに対しする操作を行なうユーザー定義メソッド(UDM)を作成できます。例えば、euroという名前のDISTINCT型UDTに対して、値をUSドルの金額に変換するメソッドを定義できます。同様に、circleという名前のSTRUCTURED型UDTに対して、半径属性を使用して円の面積を算出するメソッドを定義できます。
外部表現
すべてのUDTには、クライアント アプリケーションとサーバー間のインポートおよびエクスポート操作のためにTeradata Databaseが使用する、対応する事前定義のSQLデータ型があります。特定のUDTにマップする事前定義データ型は、UDTに関連付けられた変換定義で指定されます。
UDT | 结果 |
---|---|
DISTINCT型 | Teradata Databaseは、UDTを元の事前定義データ型にマップする、インポートおよびエクスポート操作のためのデフォルトの変換定義を自動的に生成します。 例えば、euroという名前のDISTINCT型UDTがDECIMAL(8,2)データ型に基づいているとします。 Teradata Databaseが自動生成する変換定義により、クライアント アプリケーションはDECIMAL(8,2)の外部表現を使用してデータをeuro列にロードできます。さらに、クライアント アプリケーションはeuro列に対してクエリーを実行でき、DECIMAL(8,2)と同じ形式で値を受け取ることができます。 |
STRUCTURED型 | UDTの変換定義はCREATE TRANSFORM文を使用して作成される必要があります。 変換定義は、STRUCTURED型UDTの属性値をインポートおよびエクスポートするためのコンテナとして機能する事前定義SQLデータ型を指定します。 例えば、circleという名前のSTRUCTURED型UDTは、x軸、y軸、および半径属性から構成されます。ぞれぞれの属性のデータ型がFLOATであるとします。 変換定義はBYTE(24)事前定義タイプをcircle UDTにマップして、各FLOAT属性に8バイトを許可します。クライアント アプリケーションはBYTE(24)の外部表現を使用してデータをcircle列にロードできます。同様に、アプリケーションはcircle列でクエリーを実行して、BYTE(24)コンテナの属性値を受け取ることができます。 事前定義SQLデータ型から値を抽出して、対応するUDT属性を設定するインポート操作のロジックは、CREATE TRANSFORM文に指定されるUDFとしてインプリメントされます。同様に、UDT属性値を事前定義SQLデータ型にパックするエクスポート操作のロジックはUDFまたはUDMとしてインプリメントされます。 |
順序付け機能の詳細は、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE TRANSFORM」を参照してください。
UDTの外部表現の詳細については、UDTの外部表現を参照してください。
複数変換グループのサポート
CREATE TRANSFORMまたはREPLACE TRANSFORM文を使用して、各UDTの複数の変換グループを作成できます。また、CREATE TRANSFORMを使用すると、既存の変換グループがすでにあるUDTに変換グループを追加できます。REPLACE TRANSFORMは、UDTに対してすべての既存の変換グループを削除し、UDTに対して新しい変換グループを作成します。また、DROP TRANSFORMを使用してUDTから変換グループを削除することができます。
特定のUDTに許容される変換グループの最大数は16です。
CREATE TRANSFORM文を使用する場合、from-sqlまたはto-sqlのいずれかのみを変換に指定できます。ただし、UDT列を持つテーブルを作成するため、UDTのデフォルトの変換グループは、変換グループにfrom-sqlとto-sqlの両方を関数に含んでいる必要があります。
CREATE PROFILE/MODIFY PROFILEまたはCREATE USER/MODIFY USER文でTRANSFORMオプションを使用して、ユーザーに対して特定のデータ型に使用される変換グループを指定できます。
次のマクロを使用して、UDT (またはCDT)の変換グループ、あるいはユーザー、プロファイル、または現在のセッションの変換グループ設定を検索することができます。
マクロ | 説明 |
---|---|
SYSUDTLIB.HelpCurrentUserTransforms | 現在のログオン ユーザーの変換グループ設定をリストする。 |
SYSUDTLIB.HelpCurrentSessionTransforms | 現在のセッションの変換グループの設定を表示する。 |
SYSUDTLIB.HelpUserTransforms(User) | 特定のユーザーの変換グループ設定をリストする。 |
SYSUDTLIB.HelpCurrentUDTTransform(UDT) | 指定されたUDTに対する現在のセッションの変換グループの設定を表示する。 |
SYSUDTLIB.HelpUDTTransform(User,UDT) | ユーザーのUDTの変換グループをリストする。 |
SYSUDTLIB.HelpProfileTransforms(Profile) | 特定のプロファイルの変換グループ設定をリストする。 |
SYSUDTLIB.HelpProfileTransform(Profile,UDT) |
プロファイルのUDTの変換グループをリストする。 |
これらのマクロの詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。
許可
UDT列を持つテーブルを作成するには、SYSUDTLIBデータベースに対するUDTUSAGE、UDTTYPE、またはUDTMETHOD権限、あるいは指定されたUDTに対するUDTUSAGE権限が必要です。
UDT列でクエリーを実行するには、指定されたUDTに対するUDTUSAGE権限が必要です。
制限
- インデックス テーブル、結合インデックス、またはハッシュ インデックスを作成するときに、UDT列にプライマリ インデックスまたはセカンダリ インデックスを宣言することができます。ただし、次のUDTタイプはプライマリ インデックスまたはセカンダリ インデックスのどの形式もサポートしていません。
- LOB UDT
- VARIANT_TYPE UDT
- CLOBおよびBLOBデータ型に適用される制約はLOB UDTにも適用されます。
- 1つのテーブルで、最大32のCLOB、BLOB、またはLOB UDT列の組み合わせが可能です。
- キュー テーブルにはCLOB、BLOB、またはLOB UDT列を含めることはできません。
- 名前に非ASCII文字を使用した既存のUDTがある場合は、名前にLATIN文字を使用した新しいUDTの作成にASCIIセッション文字セットを使用することはできません。代わりに、UTF8またはUTF16セッション文字セットを使用する必要があります。
UDTを処理する関数
パラメータとして、およびC、C++、またはJavaで記述されたUDFのための戻り型としてUDTを指定できます。これには、スカラーと集約UDF、テーブル関数、およびテーブル演算子が含まれます。
UDTは、C、C++、またはJavaで記述されたストアド プロシージャおよび外部ストアド プロシージャのIN、INOUT、OUTパラメータとして指定できます。
FNC関数、Javaクラスおよびメソッドは、UDFまたは外部ストアド プロシージャでUDTパラメータへのアクセスやその値を設定できるように、またはUDTパラメータの情報を取得できるようにするために提供されています。これらの関数およびメソッドの詳細については、<Teradata Vantage™ - SQL外部ルーチン プログラミング、B035-1147>を参照してください。
- 関数または演算子が受け入れる事前定義タイプにUDTをキャストする暗黙的なキャスト定義が存在する。
- DisableUDTImplCastForSysFuncOp DBS Controlフィールドがゼロに設定されている。
SQL関数および演算子とともにUDTを使用する方法については、<Teradata Vantage™ - SQL関数、式、および述部、B035-1145> を参照してください。
関連トピック
詳細情報 | 参照先 |
---|---|
UDTをサポートする関数と演算子 | Teradata Vantage™ - SQL関数、式、および述部、B035-1145。 |
UDTを処理するUDF、UDM、および外部ストアド プロシージャの機能のインプリメント | Teradata Vantage™ - SQL外部ルーチン プログラミング、B035-1147。 |
UDT定義の作成 | <Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE TYPE」 |
変換定義の作成および削除 |
|
ユーザーへのデフォルト以外の変換グループ設定の指定 | <Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE/MODIFY PROFILE」および「CREATE/MODIFY USER」 |
キャスト定義の作成 | <Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE CAST」 |
UDT列を持つテーブルの作成 | <Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE TABLE」 |
DisableUDTImplCastForSysFuncOp DBS制御フィールド | Teradata Vantage™ - データベース ユーティリティ、B035-1102。 |