ストアドプロシージャ内でJSONおよびJSONBデータ型を使用する
ストアド・プロシージャ内で JSON データ型と JSONB データ型を使用する方法を学びます。
JSON データ型はNetezza Performance Server 11.0.3.X、11.1.X.X以降でサポートされています。
JSONB データ型はNetezza Performance Server 11.1.X.X以降でサポートされています。
ストアド・プロシージャ内でJSONとJSONBデータ型を使用することは、ストアド・プロシージャ内で任意のテーブルを作成することと同じです。
テーブルの変更、ビューの作成、外部テーブルの作成、制約の追加など、どのようなSQL操作でも使用できます、 これは、ストアドプロシージャ内の JSON および JSONB データ型でサポートされています。
例:
- ストアド・プロシージャの内部で、'
json
テーブルのドロップ/作成/挿入クエリを実行する:TESTSP.ADMIN(ADMIN)$> DROP TABLE <json_table_name> IF EXISTS; TESTSP.ADMIN(ADMIN)$> CREATE TABLE <json_table_name>(C1 JSON); TESTSP.ADMIN(ADMIN)$> INSERT INTO <json_table_name> VALUES('{ "CUSTOMER": "ABK", "ITEMS": {"PRODUCT": "LIGHT","QTY": 63}}');
- テーブルから使用クエリを選択する:
TESTSP.ADMIN(ADMIN)$> SELECT COUNT(*) INTO tableCnt FROM <json/jsonb_table_name>; TESTSP.ADMIN(ADMIN)$> RETURN tableCnt;
例
- JSONデータ型の例
CREATE OR REPLACE PROCEDURE JSONSP() RETURNS integer EXECUTE AS OWNER LANGUAGE NZPLSQL AS BEGIN_PROC DECLARE tableCnt integer; BEGIN DROP TABLE JSONTABLE IF EXISTS; CREATE TABLE JSONTABLE(C1 JSON); INSERT INTO JSONTABLE VALUES('{ "CUSTOMER": "ABK", "ITEMS": {"PRODUCT": "LIGHT","QTY": 63}}'); INSERT INTO JSONTABLE VALUES('{ "CUSTOMER": "PQR", "ITEMS": {"PRODUCT": "LIGHT","QTY": 6}}'); SELECT COUNT(*) INTO tableCnt FROM JSONTABLE; RETURN tableCnt; END; END_PROC;
- プロシージャを呼び出す:
TESTSP.ADMIN(ADMIN)=> call JSONSP(); JSONSP -------- 2 (1 row)
- ショーの手順
TESTSP.ADMIN(ADMIN)=> show procedure JSONSP; SCHEMA | RESULT | PROCEDURE | BUILTIN | ARGUMENTS ---------------------------------------- ADMIN | INTEGER | JSONSP | f | () (1 row)
- プロシージャを呼び出す:
- JSONBデータ型のテーブルの例
CREATE OR REPLACE PROCEDURE JSONB_SP() RETURNS integer EXECUTE AS OWNER LANGUAGE NZPLSQL AS BEGIN_PROC DECLARE tableCnt integer; BEGIN DROP TABLE JSONB_TABLE IF EXISTS; CREATE TABLE JSONB_TABLE (C1 JSONB, C2 INT, C3 VARCHAR(50)); INSERT INTO JSONB_TABLE VALUES('{"TITLE": "SLEEPING BEAUTIES", "GENRES": ["FICTION", "THRILLER", "HORROR"], "PUBLISHED":"FALSE"}',1,'ABC'); INSERT INTO JSONB_TABLE VALUES('{"TITLE": "INFLUENCE", "GENRES": ["MARKETING & SALES", "SELF-HELP ", "PSYCHOLOGY"], "PUBLISHED": "TRUE"}',2,'PQR'); SELECT COUNT(*) INTO tableCnt FROM JSONB_TABLE; RETURN tableCnt; END; END_PROC;
- プロシージャを呼び出す:
TESTSP.ADMIN(ADMIN)=> call JSONB_SP(); JSONB_SP ---------- 2 (1 row)
- ショーの手順
TESTSP.ADMIN(ADMIN)=> show procedure JSONB_SP; SCHEMA | RESULT | PROCEDURE | BUILTIN | ARGUMENTS ---------------------------------------- ADMIN | INTEGER | JSONB_SP | f | () (1 row)
- プロシージャを呼び出す: