Как написано here, json_object_agg(name, value)
Тип возврата: json
. В то же время, если я возвращать значение, возвращаемое json_object_agg()
из хранимой процедуры:PostgreSQL. json_object_agg() возвращает текстовую строку вместо объекта json
CREATE OR REPLACE FUNCTION _getlocales()
RETURNS json AS
$BODY$DECLARE
var json;
BEGIN
select into var json_object_agg("key", "values") from table;
RETURN var;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
И называют его в другой функции:
variable = _getlocales();
RAISE NOTICE 'DATA TYPE %', pg_typeof(variable);
SELECT variable->>'property'
Я не могу получить JSON
поле объекта. Я бегу в:
ERROR: operator does not exist: text ->> unknown
И поднятый уведомление показывает, что тип данных text
.
NOTICE: DATA TYPE text
Я попытался изменить _getlocales()
тип возврата к jsonb
, но ничего не изменилось:
CREATE OR REPLACE FUNCTION nav._getlocales()
RETURNS jsonb AS
$BODY$DECLARE
_l18nJson jsonb;
...
Почему это происходит?
Пожалуйста, смотрите больше кода. Существенно, нам нужно будет увидеть определение «переменная» –
О, я выяснил это с вашей помощью. Он был объявлен как текст. Не могу понять, как я пропустил это, спасибо! Вы можете опубликовать его в качестве ответа, я буду рад принять его! –