函数返回需要列定义列表"记录"

时间:2015-02-18 05:27:20

标签: postgresql

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;

我运行上面的代码,得到一个错误说"返回"记录"

的函数需要列定义列表

1 个答案:

答案 0 :(得分:4)

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

每次我们调用returns setof record的函数时,我们都需要指定列,因此当我们调用transformServers(json)时,我们必须将其作为

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

之前,我做过

 select * from transformServers(json)

哪个不起作用。