我需要创建一个应该从中返回select语句结果的函数。
示例:
Create or replace function fun_test(cola text,colb text,rel text)
returns table(columna text,columnb text)as
$Body$
Declare
table_name varchar :='Table_';
temp_t record;
Begin
table_name := table_name || rel;
raise info '%',table_name;
execute 'select distinct'||quote_ident(cola)||','||quote_ident(colb)|| ' from '||quote_ident(table_name) into temp_t;
return query select * from temp_t; /* Error relation "temp_t" does not exist
/* Here I need to update temp_t also*/
end;
$Body$
language plpgsql;
错误:
ERROR: relation "temp_t" does not exist
LINE 1: select * from temp_t
^
答案 0 :(得分:1)
您的函数可能会说RETURNS TABLE(...)
,但它不是为您构建数据库表。 "表"在这种情况下意味着完全不同的东西返回类型的更好描述将是"记录集" (事实上,它仅仅是RETURNS SETOF RECORD
)的语法糖。
要从查询结果构建新的数据库表,请使用CREATE TABLE AS
语句。