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型のバイト単位の長さを戻します。 |