Utilisation des types de données JSON et JSONB dans les procédures stockées

Apprenez à utiliser les types de données JSON et JSONB dans les procédures stockées.

Le type de données JSON est pris en charge dans Netezza Performance Server 11.0.3.X, 11.1.X.X et les versions ultérieures.

Le type de données JSONB est pris en charge dans Netezza Performance Server 11.1.X.X et plus.

L'utilisation des types de données JSON et JSONB dans une procédure stockée est identique à la création de n'importe quelle table dans une procédure stockée.

Vous pouvez utiliser n'importe quelle opération SQL, telle que modifier une table, créer une vue, créer une table externe, ajouter des contraintes, etc, qui sont prises en charge par les types de données JSON et JSONB dans les procédures stockées.

Exemple :
  • Exécutez les requêtes drop/create/insert pour une table 'json à l'intérieur de la procédure stockée :
    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}}');
  • Sélectionner une requête d'utilisation dans un tableau :
    TESTSP.ADMIN(ADMIN)$> SELECT COUNT(*) INTO tableCnt FROM <json/jsonb_table_name>;
     TESTSP.ADMIN(ADMIN)$> RETURN tableCnt;

Exemples

Exemples pour le type de données 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;
  • Appeler ou invoquer une procédure :
    TESTSP.ADMIN(ADMIN)=> call JSONSP();
     JSONSP
     --------
     2
     (1 row)
  • Procédure d'exposition :
    TESTSP.ADMIN(ADMIN)=> show procedure JSONSP;
     SCHEMA | RESULT | PROCEDURE | BUILTIN | ARGUMENTS
     ----------------------------------------
     ADMIN | INTEGER | JSONSP | f | ()
     (1 row)
Exemples pour un tableau avec le type de données 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;
  • Appeler ou invoquer une procédure :
    TESTSP.ADMIN(ADMIN)=> call JSONB_SP();
    JSONB_SP
     ----------
     2
     (1 row)
  • Procédure d'exposition :
    TESTSP.ADMIN(ADMIN)=> show procedure JSONB_SP;
     SCHEMA | RESULT | PROCEDURE | BUILTIN | ARGUMENTS
     ----------------------------------------
     ADMIN | INTEGER | JSONB_SP | f | ()
     (1 row)