17.00 - 17.05 - FNC_GetJSONInfoの使用例 - 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
日本語 (日本)

SQL定義:

REPLACE FUNCTION getJSONInfo (a1 TD_ANYTYPE)
RETURNS VARCHAR(100)
NO SQL
PARAMETER STYLE TD_GENERAL
DETERMINISTIC
LANGUAGE C
EXTERNAL NAME 'CS!getJSONInfo!getJSONInfo.c!F!getJSONInfo';

C関数定義、getJSONInfo.c:

#define SQL_TEXT Latin_Text
#include <sqltypes_td.h>
#include <string.h>
#include <stdio.h>
#define buffer_size 64000

void getJSONInfo( JSON_HANDLE *json_instance,
                  VARCHAR_LATIN *result,
                  char sqlstate[6])
{
   int length = 0;
   charset_et charset = 0;
   int numLobs = 0;

   /* Get the info of the JSON instance. */
   FNC_GetJSONInfo((*json_instance), &length, &charset, &numLobs);
   sprintf(result, "Length: %d, CharSet: %d, NumLobs: %d\0", length, charset, numLobs);
}

テーブル、データ、および問合わせの例:

CREATE TABLE jsonTable(id INTEGER, j JSON(100) CHARACTER SET LATIN);

INSERT INTO jsonTable(1, '{"name":"Cameron"}');

SELECT getJSONInfo(j) FROM jsonTable;

結果:

getJSONInfo(j)
-----------------------------------
Length: 100, CharSet: 1, NumLobs: 0