postgresql: элементы массива в функции

Двумя запросами к таблице бд postgresql получаю нужные данные, например:

select 
body::json->'data'->'msg'                     -- ["txt1", "txt2", "txt3"]
from ...
where ...
;

select 
json_array_length(body::json->'data'->'msg')  -- 3
from ...
where ...
; 

Хочу их получить из функции, делаю так:

arr := ARRAY(select body::json->'data'->'msg' from ... where ...); -- {"[\"txt1\", \"txt2\", \"txt3\"]"}
return array_length(arr, 1);                                       -- 1

Как исправить код в функции, чтобы получить количество элементов массива 3 и перебирать их так: arr[i]. Нужно отрабатывать null значения, если будет вместо "txt".


Ответы (0 шт):