【问题标题】:a column definition list is required for functions returning "record"返回“记录”的函数需要列定义列表
【发布时间】:2015-04-19 00:56:06
【问题描述】:
CREATE OR REPLACE FUNCTION transformServers(data jsonb)
RETURNS SETOF record  as $$                        
DECLARE                                            
r record;                                          

BEGIN                                              
for r in select.serversSet.id,serversSet.hostname from jsonb_to_recordset(data->'data') AS           
 serversSet (                                       
 id bigint,                                         
 hostname text,                                                                                                                                  
) loop                                             
return next r;                                     
end loop;                                          
return;  
 END;
 $$ language plpgsql;

我运行上面的代码,得到一个错误提示“返回“记录”的函数需要列定义列表

【问题讨论】:

  • 问题解决了!快乐的。实际上问题出在另一个我称之为 transformServers(json) 的函数中。每次我们调用一个返回setof记录的函数时,我们都需要指定列,所以当我们调用transformServers(json)时,像select * from transformServers(json).as f(id bigint, hostname text) 之前我做过select * from transformServers(json)

标签: postgresql


【解决方案1】:

问题解决了!实际上问题出在另一个函数中,我称之为transformServers(json)。

每次调用returns setof record的函数时,都需要指定列,所以调用transformServers(json)时,我们必须这样做

 select * from transformServers(json) as f(id bigint, hostname text) 

以前,我做过

 select * from transformServers(json)

这不起作用。

【讨论】:

    猜你喜欢
    • 2017-01-02
    • 2012-01-26
    • 1970-01-01
    • 2013-02-19
    • 2016-01-07
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多