PostgreSQL 动态表名问题求教
我想创建一个函数,用来查询一个表里的数据,但是表名是需要动态变化的
函数大概的方法如下:
CREATE OR REPLACE FUNCTION test()
RETURNS SETOF record AS
$BODY$
begin
return query select dummy from dual;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION test() OWNER TO admin;
我想让“dual”这个表名按照输入来定义,自己写了下面的方法:
CREATE OR REPLACE FUNCTION test(ff varchar)
RETURNS SETOF record AS
$BODY$
DECLARE
aa varchar;
begin
aa := "select dummy from "+ff;
execute aa;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION test() OWNER TO admin;
但是执行以下语句时会报错:
select * from test(dual) as ok(dummy character varying);
ERROR: column "dual" does not exist
LINE 1: select * from test(dual) as ok(dummy character v.......
我对对PostgreSQL的语法不是很清楚,查了很多资料也没搞清楚动态SQL是怎么构造出来的
还请各位帮忙,小弟不胜感激!