目的
外部ルーチンの入力パラメータまたは出力パラメータとして使用されるJSON型インスタンスの最大長、インライン長、文字セット、およびストレージ形式を取得します。 またこの関数は、JSONデータがLOBとして格納されるかどうかも示します。 この関数は、追加のインライン長および格納形式情報が返されるFNC_GetJSONInfoに似ています。
構文規則
void FNC_GetExtendedJSONInfo ( JSON_HANDLE jsonHandle, int *inlineLength, int *maxLength, charset_et *charSet, int *numLobs, json_storage_et *storageFmt);
- JSON_HANDLE jsonHandle
- 外部ルーチンへのパラメータと定義されているJSON型へのハンドル。
- int *inlineLength
- 行に格納できるJSONインスタンスの最大可能サイズを指定するパラメータを返します。サイズはバイト単位で指定されます。
- int *maxLength
- バイト単位のJSONインスタンスの可能な最大長を指定するパラメータを返します。
- charset_et *charSet
- sqltypes_td.hで定義されている、JSONテキストの文字セット、LATIN_CTまたはUNICODE_CTを指定するパラメータを返します。これがバイナリJSONインスタンスである場合、文字セットはUNDEF_CTとして指定されます。
- int *numLobs
- JSONデータを保存するために使用されるLOBの数を指定するパラメータを返します。有効な値は以下のとおりです。
- 0: データがLOBとして保存されていないことを示す
- 1: データがLOBとして保存されていることを示す
- json_storage_et *storageFmt
- JSONインスタンスに対し格納形式を指定するパラメータを返します。有効な値は、次のようにsqltypes_td.hで定義されます:
typedef enum json_storage_en { JSON_INVALID_EN=-1, JSON_TEXT_EN=0, JSON_BSON_EN=1, JSON_UBJSON_EN=2, DATASET_AVRO_EN=3 } json_storage_en;
例: FNC_GetExtendedJSONInfo
/* CREATE FUNCTION MyJSONUDF( a1 JSON(100) ) RETURNS VARCHAR(100) NO SQL PARAMETER STYLE SQL DETERMINISTIC LANGUAGE C EXTERNAL NAME 'CS!MyJSONUDF!MyJSONUDF.c!F!MyJSONUDF'; */
void MyJSONUDF( JSON_HANDLE *json_instance, VARCHAR_LATIN *result, char sqlstate[6]) { int maxLength = 0; int inlineLength = 0; charset_et charset = 0; int numLobs = 0; json_storage_et storageFmt = JSON_INVALID_EN; /* Get the info of the JSON instance. */ FNC_GetExtendedJSONInfo((*json_instance),&inlineLength, &maxLength, &charset, &numLobs, &storageFmt); sprintf(result, "Inline Length: %d, Max Length: %d, CharSet: %d, NumLobs: %d, Storage Format: %d", inlineLength, maxLength, charset, numLobs, storageFmt); ... }
サンプル出力:
> Inline Length: 100, Max Length: 100, CharSet: 1, NumLobs: 0, Storage Format: 0