I've got a json that looks like this
{
"elements": [ "element1", "element2", "element3" ]
}
I want to iterate over its element and print them. I do it like this
do $$
declare
datajson jsonb := '{
"elements": [ "element1", "element2", "element3", "element4" ]
}';
element varchar(128);
begin
foreach element in array jsonb_array_elements(datajson->'elements')
loop
raise notice '%', element;
end loop;
end;
$$;
But it fails with the error query select jsonb_array_elements(datajson->'elements') returned more than one row.
What is the problem?
UPDATE
Tried this suggestion:
do $$
declare
datajson jsonb := '{
"elements": [ "element1", "element2", "element3", "element4" ]
}';
element varchar(128);
begin
foreach element in array
SELECT array_agg(jsonb_array_elements) FROM jsonb_array_elements(datajson->'elements')
loop
raise notice '%', element;
end loop;
end;
$$;
But that just gives a syntax error:
ERROR: 42601: syntax error at or near "SELECT"
LINE 7: SELECT array_agg(jsonb_array_elements) FROM jsonb_array_...
^
LOCATION: scanner_yyerror, scan.l:1134
Trying to do this without using FOR r IN (...) and declaring a RECORD variable.