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_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
指定された日付/時刻型のバイト単位の長さを戻します。