Teradata Databaseは、以下の操作に対してNUMERICからUDTへの暗黙的変換を実行します。
- UPDATE
- INSERT
- ストアド プロシージャ、外部ストアド プロシージャ、UDF、およびUDMへの引数の引き渡し。
- このドキュメント中の他の箇所に明記されている特定のシステム演算子と関数(DBS制御レコードのDisableUDTImplCastForSysFuncOpフィールドがTRUEに設定されていない場合に限る)。
暗黙のデータ型変換を実行するには、AS ASSIGNMENT句を指定する適切なCAST定義(使用上の注意を参照)が存在していなければなりません。
キャスト定義のソース数値型は、暗黙の変換のソース数値型と正確に一致している必要はありません。Teradata Databaseは、BYTEINT、SMALLINT、INTEGER、BIGINT、DECIMAL/NUMERIC、NUMBER、またはREAL/FLOAT/DOUBLEターゲット型を指定する暗黙的なキャスト定義を使用することができます。
別々の数値型からUDTへの変換で複数の暗黙的なキャスト定義が存在する場合、Teradata Databaseは優先順位の最も高い数値型の暗黙的なキャスト定義を使用します。以下のリストでは、数値型の優先順位が最低から最高の順に並べられています。
- BYTEINT
- SMALLINT
- INTEGER
- BIGINT
- DECIMAL/NUMERIC
- NUMBER
- REAL/FLOAT/DOUBLE
NUMERICからUDTへの暗黙CAST定義が存在しない場合、Teradata Databaseは代用可能なその他のCAST定義を検索します。
存在する暗黙CAST定義の組み合わせ | Teradata Databaseの動作 | |
---|---|---|
DATEからUDT | 文字からUDT | |
X | DATEからUDTへの暗黙CAST定義を使用する。 | |
X | 文字からUDTへの暗黙CAST定義を使用する。 CLOBは文字タイプにはなりません。 文字からUDTへの暗黙のCAST定義が複数存在する場合、Teradata DatabaseはSQLエラーを戻します。 |
|
X | X | エラーを報告する。 |
Teradata Databaseは数値型を代用データ型に暗黙的にキャストしてから、暗黙的なキャスト定義を使用して、その代用データ型からUDTへのキャストを行なえるため、代用は有効です。