Forked from rusllonrails/POSTGRESQL | JSONB LOOP ARRAYS EXAMPLE 2
Created
April 7, 2021 11:04
-
-
Save santarinto/19849f32cd2ff04eb4144539fac9ec16 to your computer and use it in GitHub Desktop.
POSTGRESQL | JSONB LOOP ARRAYS EXAMPLE 2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE OR REPLACE FUNCTION test1(in_array jsonb) | |
RETURNS text[] AS $$ | |
DECLARE | |
js jsonb := in_array; | |
i jsonb; | |
result_ids TEXT[]; | |
uuid text; | |
state text; | |
version text; | |
category_id text; | |
expires_on date; | |
issue_date date; | |
updated_at date; | |
BEGIN | |
raise notice ' '; | |
raise notice 'js: %', js; | |
raise notice ' '; | |
raise notice 'jsonb_array_length(js): %', jsonb_array_length(js); | |
FOR i IN SELECT * FROM jsonb_array_elements(js) | |
LOOP | |
uuid := i->>'uuid'; | |
state := i->>'state'; | |
version := i->>'version'; | |
expires_on := i->>'expires_on'; | |
issue_date := i->>'issue_date'; | |
updated_at := i->>'updated_at'; | |
category_id := i->>'category_id'; | |
RAISE NOTICE '-----------------------------------'; | |
RAISE NOTICE 'uuid %', uuid; | |
RAISE NOTICE 'state %', state; | |
RAISE NOTICE 'version %', version; | |
RAISE NOTICE 'expires_on %', expires_on; | |
RAISE NOTICE 'issue_date %', issue_date; | |
RAISE NOTICE 'updated_at %', updated_at; | |
RAISE NOTICE 'category_id %', category_id; | |
RAISE NOTICE '-----------------------------------'; | |
IF state = 'regular' THEN | |
result_ids := array_append(result_ids, uuid); | |
END IF; | |
END LOOP; | |
RAISE NOTICE '-----------------------------------'; | |
RAISE NOTICE 'result_ids %', result_ids; | |
RAISE NOTICE '-----------------------------------'; | |
RETURN result_ids; | |
END; | |
$$ LANGUAGE plpgsql; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment