JSONデータ型
FNC_SetInternalValueを使用して、文字またはバイナリのJSON値を設定できます。JSON型インスタンスの文字列表現を設定するとき、インスタンスの定義方法に応じて、文字列はUNICODEまたはLATINテキストのいずれかになります。
FNC_SetInternalValueを呼び出す前に、外部ルーチンはnewValueにより参照されるバッファを割り振る必要があります。newValueは、設定される新しいJSONデータを含む有効なメモリ バッファを指す必要があります。データの長さは、FNC_GetExtendedJSONInfoによって報告されたインラインの最大長を超えることはできません。
JSONデータがLOBとして保存されされていない場合のみ、FNC_GetInternalValueを使用します。FNC_GetJSONInfoまたはFNC_GetExtendedJSONInfoがnumLobs = 0を返す場合、FNC_SetInternalValueを使用できます。その他の場合は、代わりにFNC_GetJSONResultLobを使用する必要があります。
DATASETデータ型
FNC_SetInternalValueを呼び出す前に、外部ルーチンはnewValueにより参照されるバッファを割り振る必要があります。newValueは、設定される新しいDATASETデータを含む有効なメモリ バッファを指す必要があります。データの長さは、FNC_GetDatasetInfoによって報告されたインラインの最大長を超えることはできません。
DATASETデータがLOBとして格納されないない場合のみ、FNC_SetInternalValueを使用します。FNC_GetDatasetInfoがdataLob = 0を返す場合、FNC_SetInternalValueを使用できます。その他の場合、代わりにFNC_GetDatasetResultLobを使用する必要があります。
Avroインスタンスの場合、このルーチンを使用して、NULLで終端するUTF-8エンコード スキーマ、その後にバイナリ コード化されたAvro値をバッファに書き込み、それをデータベースに渡すことができます。これは、変換形式と同じです。この形式でデータの書き込みに失敗すると、エラーが発生します。
この関数に渡されるCSV値には、オプションのスキーマを含めることはできません。
PERIOD型
PERIOD型の場合、戻りデータの形式はPERIODデータ型の要素型に応じて異なります。PERIOD型が次の場合:
- PERIOD(DATE)の場合、newValueデータの形式は2つの連続するDATE値となります。
- PERIOD(TIME)の場合、newValueデータの形式は2つの連続するTIME 値となります。
- PERIOD(TIME WITH TIME ZONE)の場合、newValueデータの形式は2つの連続するTIME WITH TIME ZONE値となります。
- PERIOD(TIMESTAMP)の場合、newValueデータの形式は2つの連続するTIMESTAMP値となります。
- PERIOD(TIMESTAMP WITH TIME ZONE)の場合、newValueデータの形式は2つの連続するTIMESTAMP WITH TIME ZONE値となります。
newValueにより参照されるバッファのサイズは、PERIODデータ型の要素型の2つの連続する値を保持する十分な大きさがなければなりません。例えば、PERIOD型がPERIOD(DATE)の場合、バッファは2つの連続するDATE値を保持する十分な大きさがなければなりません。
lengthパラメータに入れて渡す値が必ずTeradata Databaseのデータ型の長さに一致するようにするには、sqltypes_td.hヘッダー ファイルに定義されている以下のマクロを使用します。
マクロ | 説明 |
---|---|
SIZEOF_DATE SIZEOF_ANSI_Time SIZEOF_ANSI_Time_WZone SIZEOF_TimeStamp SIZEOF_TimeStamp_WZone |
指定された日付/時刻型のバイト単位の長さを戻します。 |