FNC_GetDistinctValueを呼び出すには、その前に、DISTINCT型UDTの基礎となる型にマッピングされるCデータ型を使って、returnValueが指すバッファを割り振っておく必要があります。例えば、DISTINCT型がSQL INTEGERデータ型を表わす場合、次のようにバッファを宣言します。
INTEGER value;
DISTINCT型UDTの基礎となる型が文字列である場合、FNC_GetDistinctValueはNULL終了文字列を戻します。定義するバッファは、NULL終了を含めて入れることのできる十分な大きさのものでなければなりません。
使用できるCデータ型の詳細は、Cデータ型を参照してください。
bufSize引数に入れて渡す値が必ずTeradata Databaseのデータ型の長さに一致するようにするには、sqltypes_td.hヘッダー ファイルに定義されている次のようなマクロを使用します。
マクロ | 説明 |
---|---|
SIZEOF_CHARACTER_LATIN_WITH_NULL(len) SIZEOF_CHARACTER_KANJISJIS_WITH_NULL(len) SIZEOF_CHARACTER_KANJI1_WITH_NULL(len) SIZEOF_CHARACTER_UNICODE_WITH_NULL(len) |
NULL終了文字も含め、文字数lenのCHARACTERデータ型のバイト単位の長さを戻します。例えば、以下の式は8 (3 * 2 + 2 = 8)の長さを戻します。SIZEOF_CHARACTER_UNICODE_WITH_NULL(3) |
SIZEOF_VARCHAR_LATIN_WITH_NULL(len) SIZEOF_VARCHAR_KANJISJIS_WITH_NULL(len) SIZEOF_VARCHAR_KANJI1_WITH_NULL(len) SIZEOF_VARCHAR_UNICODE_WITH_NULL(len) |
NULL終了文字も含め、文字数lenのVARCHARデータ型のバイト単位の長さを戻します。例えば、以下の式は8 (3 * 2 + 2 = 8)の長さを戻します。SIZEOF_VARCHAR_UNICODE_WITH_NULL(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型のバイト単位の長さを戻します。 |