Моя таблица fpo выглядит следующим образом:
id fo_data
1 {"bene_first_name":{"value":"Chris1"},"bene_last_name":{"value":"Ronald"}}
2 {"bene_first_name":{"value":"John"},"bene_last_name":{"value":"Wick"}}
1 {"bene_first_name":{"value":"James"},"bene_last_name":{"value":"Cooper"}}
Я создал хранимую процедуру, как показано ниже, и я пытаюсь собрать все данные определенного столбца "fo_data" sh в одну переменную JSON и я пытаюсь l oop полученные JSON данные
CREATE OR REPLACE FUNCTION file_compare()
RETURNS TEXT LANGUAGE 'plpgsql' COST 100 VOLATILE AS $BODY$
DECLARE
fpo_data jsonb;
i JSONB;
BEGIN
SELECT json_agg((fpdata))::jsonb
FROM (SELECT fo_data AS fpdata
FROM fpo LIMIT 100
) t INTO fpo_data;
FOR i IN SELECT * FROM jsonb_array_elements(fpo_data) LOOP
RAISE NOTICE 'output from space %', i->>'bene_firstname';
END LOOP;
RETURN fpo_data;
END;
$BODY$;
Я получаю следующий вывод для "RETURN fpo_data"
["{\"bene_first_name\":{\"value\":\"Chris\"},\"bene_last_name\":{\"value\":\"Ronald\"}}",
"{\"bene_first_name\":{\"value\":\"John\"},\"bene_last_name\":{\"value\":\"Wick\"}}",
"{\"bene_first_name\":{\"value\":\"James\"},\"bene_last_name\":{\"value\":\"Cooper\"}}"
Если я пытаюсь напечатать 'bene_firstname'
вот так
RAISE NOTICE 'output from space %', i->>'bene_firstname'
Я получаю ошибку как
ERROR: operator does not exist: record ->> unknown.
Если я печатаю только «i», я получаю следующие данные, напечатанные в консоли
NOTICE: output from space ("""{\\""bene_first_name\\"":{\\""value\\"":\\""Chris90\\""},\\""bene_last_name\\"":{\\""value\\"":\\""Ronald\\""}}""")
NOTICE: output from space ("""{\\""bene_first_name\\"":{\\""value\\"":\\""John\\""},\\""bene_last_name\\"":{\\""value\\"":\\""Wick\\""}}""")
NOTICE: output from space ("""{\\""bene_first_name\\"":{\\""value\\"":\\""James\\""},\\""bene_last_name\\"":{\\""value\\"":\\""Cooper\\""}}""")
Как я могу получить 'bene_firstname' из вышеуказанного json массива