在下面的函数中我传递我的表名作为文本'K',并希望在我的函数中使用它作为游标声明。我使用postgres 8.2(greenplum )传递表名作为输入参数动态使用
我用quote_ident(k)
,dint工作。有人能帮我吗?谢谢!
CREATE OR REPLACE FUNCTION vin_temp(K text) RETURNS text AS
$BODY$
DECLARE
r vin_res%rowtype;
r1 numeric default 0;
rfr numeric default 0;
rdu numeric default 0;
rav numeric default 0;
rfr1 numeric default 0;
rdu1 numeric default 0;
rav1 numeric default 0;
r2 numeric default 0;
i integer default 0;
x text default '';
curs2 CURSOR FOR SELECT * FROM k order by week_end asc;
BEGIN
open curs2;
LOOP
FETCH curs2 INTO r;
exit when not found;
if (i=1) then
r1:=r.v1;
rav:=r.v2;
rfr:=r.v3;
else
some logic here
end if;
END LOOP;
RETURN 'yes';
END
$BODY$
LANGUAGE 'plpgsql' ;
我尝试下面的代码,以及:
curs2 CURSOR FOR EXECUTE 'SELECT * from '||quote_ident(k)||' order by week_end asc';
@Houari不能使用该方法时许版本的Postgres 8.2。我收到错误“准备好的声明”格式“不存在” – user2569524