17.00 - 17.05 - 使用上の注意 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

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

newValueが指すバッファを定義するには、DISTINCT型UDTの基礎となる型にマッピングされるCデータ型を使用します。例えば、DISTINCT型がSQL INTEGERデータ型を表わす場合、次のようにバッファを定義することができます。

INTEGER value;
value = 2048;

使用できるCデータ型の詳細は、Cデータ型を参照してください。

DISTINCT型UDTの基礎となる型が文字列で、その型で定義されているサイズよりもnewValue文字列のほうが短い場合には、その右側にFNC_SetDistinctValueによってスペースが埋め込まれます。

文字データ型はNULL文字の埋め込みに対応しているため、length引数に入れて渡す値にNULL終了文字の分は含めないでください。

length引数に入れて渡す値が必ずTeradata Databaseのデータ型の長さに一致するようにするには、sqltypes_td.hヘッダー ファイルに定義されているこれらのマクロを使用します。

マクロ 説明
SIZEOF_CHARACTER_LATIN(len)
SIZEOF_CHARACTER_KANJISJIS(len)
SIZEOF_CHARACTER_KANJI1(len)
SIZEOF_CHARACTER_UNICODE(len)
文字数lenのCHARACTERデータ型のバイト単位の長さを戻します。例えば、以下の式は6 (3 * 2 = 6)の長さを戻します。
SIZEOF_CHARACTER_UNICODE(3)
SIZEOF_VARCHAR_LATIN(len)
SIZEOF_VARCHAR_KANJISJIS(len)
SIZEOF_VARCHAR_KANJI1(len)
SIZEOF_VARCHAR_UNICODE(len)
文字数lenのVARCHARデータ型のバイト単位の長さを戻します。例えば、以下の式は6 (3 * 2 = 6)の長さを戻します。
SIZEOF_VARCHAR_UNICODE(3)
SIZEOF_BYTE(len)
SIZEOF_VARBYTE(len)
指定されたBYTEデータ型またはVARBYTEデータ型のバイト単位の長さを戻します(lenは値の数)。
SIZEOF_GRAPHIC(len)
SIZEOF_VARGRAPHIC(len)
指定されたCHARACTER(n) CHARACTER SET GRAPHICまたはVARCHAR(n) CHARACTER SET GRAPHICのデータ型長がバイト数単位で返されます。lenはここで値の数を指定します。
SIZEOF_BYTEINT
SIZEOF_SMALLINT
SIZEOF_INTEGER
SIZEOF_BIGINT
SIZEOF_REAL
SIZEOF_DOUBLE_PRECISION
SIZEOF_FLOAT
SIZEOF_DECIMAL1
SIZEOF_DECIMAL2
SIZEOF_DECIMAL4
SIZEOF_DECIMAL8
SIZEOF_DECIMAL16
SIZEOF_NUMERIC1
SIZEOF_NUMERIC2
SIZEOF_NUMERIC4
SIZEOF_NUMERIC8
SIZEOF_NUMERIC16
SIZEOF_NUMBER
指定された数値データ型のバイト単位の長さを戻します。

NUMBERの場合、返される長さは4 + 2 + 17 = 23バイトになります。これは、Teradata Databaseが小数部分に最大長(17バイト)を割り当てるためです。

SIZEOF_DATE
SIZEOF_ANSI_Time
SIZEOF_ANSI_Time_WZone
SIZEOF_TimeStamp
SIZEOF_TimeStamp_WZone
指定された日付/時刻型のバイト単位の長さを戻します。
SIZEOF_INTERVAL_YEAR
SIZEOF_IntrvlYtoM
SIZEOF_INTERVAL_MONTH
SIZEOF_INTERVAL_DAY
SIZEOF_IntrvlDtoH
SIZEOF_IntrvlDtoM
SIZEOF_IntrvlDtoS
SIZEOF_HOUR
SIZEOF_IntrvlHtoM
SIZEOF_IntrvlHtoS
SIZEOF_MINUTE
SIZEOF_IntrvlMtoS
SIZEOF_IntrvlSec
指定されたINTERVAL型のバイト単位の長さを戻します。