我有一个功能如下:
CREATE OR REPLACE FUNCTION func(a integer)
RETURNS integer AS
$BODY$
begin
for row in
Select id from table_a where quantity=1
loop
do something
end loop
end;
$BODY$
LANGUAGE plpgsql VOLATILE
我需要更改此函数以获取另一个参数,该参数告诉您是使用
table_a
还是 table_b
。当
whichtouse=1
我需要使用 table_a
。当
whichtouse=2
我需要使用 table_b
。CREATE OR REPLACE FUNCTION func(a integer,whichtouse integer)
RETURNS integer AS
$BODY$
begin
for row in
Select id from ??? where quantity=1
loop
do something
end loop
end;
$BODY$
LANGUAGE plpgsql VOLATILE
如何确定要使用哪个表?
最佳答案
使用 dynamic SQL :
CREATE OR REPLACE FUNCTION func(a integer, whichtouse integer)
RETURNS integer AS
$BODY$
declare
l_sql text;
l_rec record;
begin
if whichtouse = 1 then
l_sql := format('select id from %I where qantity=1', 'table_a');
else
l_sql := format('select id from %I where qantity=1', 'table_b');
end if;
for l_rec in execute l_sql
loop
-- do something
end loop;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
关于sql - 表名作为postgresql中的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35195940/