【发布时间】:2014-04-04 22:55:35
【问题描述】:
问题:使用多态类型“anyelement”从表中返回选定行时出错。
错误:查询结构与函数结果类型不匹配。
---表格
CREATE TABLE tes1
(
rollno integer,
fname text,
lname text,
age integer,
branch text,
phno integer,
email text,
address text,
city text,
state text,
country text
)
---功能
create or replace function fun_test(column_name varchar,relation_name anyelement)
returns setof anyelement as
$body$
declare
str varchar;
grouping varchar;
additional_column varchar;
select_query varchar;
begin
if column_name='fname' then
str:=quote_ident(column_name);
additional_column:=' max("address") as addr, max("city") as cty, max("state") as st, max("country") as cntry';
grouping:='"rollno"'||','||quote_ident(column_name);
else
str:=quote_ident(column_name);
additional_column:=' max("address") as addr, max("city") as cty, max("state") as st, max("country") as cntry';
grouping:='"rollno"'||','||quote_ident(column_name);
end if;
select_query:= 'select rollno,'||str||','||additional_column||' from '||pg_typeof(relation_name)||
' group by '|| grouping;
raise info '%',select_query;
return query execute select_query;
end;
$body$
language plpgsql;
---调用函数
select * from fun_test('fname',NULL::test)
【问题讨论】:
标签: postgresql plpgsql polymorphism