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
日本語 (日本)

FNC_GetStructuredAttributeByNdxを呼び出すには、その前に、その属性の基礎となる型にマッピングされるCデータ型を使って、returnValueが指すバッファを割り振っておく必要があります。例えば、属性の基礎となる型がSQL INTEGERデータ型の場合、次のようにバッファを宣言します。

INTEGER value;

属性がDISTINCT型である場合、DISTINCT型が表わすCデータ型を使ってバッファを割り振ります。例えば、その属性がSQL SMALLINTデータ型を表わすDISTINCT型の場合、次のようにバッファを宣言します。

SMALLINT value;

属性の基礎となる型が文字列である場合、FNC_GetStructuredAttributeByNdxは、NULL終了文字列を戻します。定義するバッファは、NULL終了を含めて入れることのできる十分な大きさのものでなければなりません。

属性がSTRUCTURED型の場合、FNC_GetStructuredAttributeByNdxはUDTハンドルを戻します。STRUCTURED型の属性に関する記述情報を取得するには、UDTハンドルをFNC_GetStructuredAttributeInfoに渡します。

使用できる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型のバイト単位の長さを戻します。
SIZEOF_UDT_HANDLE
UDTへのハンドルの長さをバイト数単位で戻します。