ストアドプロシージャ内で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)