我有一个具有记录返回类型的函数。
下面是我正在使用的函数,基本上是函数的作用,它接受输入参数并查询数据库以返回列:
drop function if exists test_proc(sr_number1 bigint);
create or replace function test_proc(sr_number1 bigint) RETURNS record /*SETOF tbl*/ AS $$
declare
i integer default 0;
record_type record;
begin
select sr_num,product_number,phone,addr into record_type from my_table where sr_num=sr_number1;
return record_type;
end
$$ LANGUAGE plpgsql;
不幸的是,当我执行函数
时选择test_proc(12345);我将结果作为逗号分隔列表只在一列中得到,如(sr_num,product_number,phone,addr)。但我希望它返回的是一个包含列值及其各自列名的表行。
我也尝试将函数作为
执行select * from test_proc(12345); but get the following error
ERROR: a column definition list is required for functions returning "record"
答案 0 :(得分:1)
查询返回记录的函数时,必须指定要在结果中获取的记录类型
select * from test_proc(12345) f(b bigint, t text);
这应该有用。
更好的解决方案是在函数
中声明记录类型 CREATE OR REPLACE FUNCTION test_proc(sr_number1 bigint)
RETURNS TABLE(b bigint, t text) AS $$ $$