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

JSONデータ型

FNC_GetInternalValueは、文字およびバイナリJSON値を取得します。テキストベースの値の場合、ルーチンはJSONインスタンスの文字列表現を、インスタンスの定義方法に応じてUNICODEテキストまたはLATINテキストとして返します。

FNC_GetInternalValueを呼び出す前に、外部ルーチンはreturnValueにより参照されるバッファを割り振る必要があります。FNC_GetJSONInfoまたはFNC_GetExtendedJSONInfoを呼び出して、適切なバッファ サイズを決めるか、可能な最大長の64000バイトでバッファを割り当てることができます。

JSONデータがLOBとして保存されていない場合のみ、FNC_GetInternalValueを使用します。FNC_GetJSONInfoまたはFNC_GetExtendedJSONInfoがnumLobs > 0を返す場合、FNC_GetInternalValueを使用することができます。そうでなければ、代わりにFNC_GetJSONInputLobを使用する必要があります。

DATASETデータ型

FNC_GetInternalValueを呼び出す前に、外部ルーチンはreturnValueにより参照されるバッファを割り振る必要があります。FNC_GetDatasetInfoを呼び出して、適切なバッファ サイズを決定することができます。

DATASETデータがLOBとして保存ない場合のみ、FNC_GetInternalValueを使用します。FNC_GetDatasetInfoがdataLob = 0を返す場合、FNC_GetInternalValueを使用することができます。そうでなければ、代わりにFNC_GetDatasetInputLobを使用する必要があります。

Avroインスタンスの場合、このルーチンを使用してユーザーはNULLで終端するUTF-8でエンコードされたスキーマ、その後にバイナリ コード化されたAvro値を含むバッファにアクセスできます。これは、変換形式と同じです。

CSV値を取得する場合、この値にオプションのスキーマは含まれません。

PERIOD型

Period型の場合、バッファのサイズはPeriodデータ型の要素型に応じて異なります。

PERIOD型 必要なバッファのサイズを決定する保持データ型
PERIOD(DATE) 2つのDATE値。
PERIOD(TIME) 2つのTIME値。
PERIOD(TIME WITH TIME ZONE) 2つのTIME WITH TIME ZONE値。
PERIOD(TIMESTAMP) 2つのTIMESTAMP値。
PERIOD(TIMESTAMP WITH TIME ZONE) 2つのTIMESTAMP WITH TIME ZONE値。

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

マクロ 説明
SIZEOF_DATE
SIZEOF_ANSI_Time
SIZEOF_ANSI_Time_WZone
SIZEOF_TimeStamp
SIZEOF_TimeStamp_WZone
指定された日付/時刻型のバイト単位の長さを戻します。