4

正如这里所写,json_object_agg(name, value)返回类型是json. 同时,如果我返回json_object_agg()从存储过程返回的值:

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对象字段。我遇到:

错误:运算符不存在:文本 ->> 未知

并提出通知显示数据类型为text.

注意:数据类型文本

我试图将_getlocales()返回类型更改为jsonb,但没有任何改变:

CREATE OR REPLACE FUNCTION nav._getlocales()
RETURNS jsonb AS
$BODY$DECLARE
    _l18nJson   jsonb;
...

为什么会发生这种情况?

4

1 回答 1

1

@Richard Huxton 为我指出了正确的方向,我不专心,我已经variabletext数据类型声明了。所以,我改变了:

$BODY$DECLARE
    variable text;

至:

$BODY$DECLARE
    variable json;

问题就解决了。

于 2016-02-25T11:39:54.740 回答