Utilización de los tipos de datos JSON y JSONB en los procedimientos almacenados

Aprenda a utilizar los tipos de datos JSON y JSONB dentro de los procedimientos almacenados.

El tipo de datos JSON está soportado en Netezza Performance Server 11.0.3.X, 11.1.X.X y superiores.

El tipo de datos JSONB es compatible con Netezza Performance Server 11.1.X.X y versiones posteriores.

Utilizar los tipos de datos JSON y JSONB dentro de un procedimiento almacenado es lo mismo que crear cualquier tabla dentro de un procedimiento almacenado.

Puede utilizar cualquier operación SQL, como alterar tabla, crear vista, crear tabla externa, añadir restricciones, etc, que son compatibles con los tipos de datos JSON y JSONB dentro de los procedimientos almacenados.

Ejemplo:
  • Ejecute consultas drop/create/insert para una tabla ' json ' dentro del procedimiento almacenado:
    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}}');
  • Seleccione una consulta de uso de una tabla:
    TESTSP.ADMIN(ADMIN)$> SELECT COUNT(*) INTO tableCnt FROM <json/jsonb_table_name>;
     TESTSP.ADMIN(ADMIN)$> RETURN tableCnt;

Ejemplos

Ejemplos del tipo de datos 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;
  • Llamar o invocar procedimiento:
    TESTSP.ADMIN(ADMIN)=> call JSONSP();
     JSONSP
     --------
     2
     (1 row)
  • Procedimiento del espectáculo:
    TESTSP.ADMIN(ADMIN)=> show procedure JSONSP;
     SCHEMA | RESULT | PROCEDURE | BUILTIN | ARGUMENTS
     ----------------------------------------
     ADMIN | INTEGER | JSONSP | f | ()
     (1 row)
Ejemplos para una tabla con el tipo de datos 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;
  • Llamar o invocar procedimiento:
    TESTSP.ADMIN(ADMIN)=> call JSONB_SP();
    JSONB_SP
     ----------
     2
     (1 row)
  • Procedimiento del espectáculo:
    TESTSP.ADMIN(ADMIN)=> show procedure JSONB_SP;
     SCHEMA | RESULT | PROCEDURE | BUILTIN | ARGUMENTS
     ----------------------------------------
     ADMIN | INTEGER | JSONB_SP | f | ()
     (1 row)