在下面的函数中,我将表名作为文本“K”传递,并希望将其用于函数内的游标声明。我使用的是 postgres 8.2 (greenplum)
我用过quote_ident(k)
,也有用。有人能帮帮我吗。谢谢!
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';