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.
- 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)
- Appeler ou invoquer une procédure :
- 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)
- Appeler ou invoquer une procédure :