这里我需要用一些参数调用一个函数。
示例:
功能:
create or replace function testfunction(ids int,pcname varchar)
returns void as
$$
declare
sql varchar;
qu varchar := 'tabletemp_';
begin
qu := qu ||ids ||'_'|| pcname;
sql := 'Drop view if exists '||qu;
raise info '%',sql;
execute sql;
end;
$$
language plpgsql;
调用函数:
select testfunction(1,'abc-pc');
错误:
ERROR: syntax error at or near "-"
Drop view if exists tabletemp_1_abc-pc
^
问题:如何在调用函数时传递这样的参数?
答案 0 :(得分:2)
你忘了quote_ident
。
sql := 'Drop view if exists '|| quote_ident(qu);
但您最好使用format
:
sql := format('Drop view if exists %I', qu || ids ||'_'|| pcname);
答案 1 :(得分:2)
试试这个:
create or replace function testfunction(ids int,pcname varchar)
returns void as
$$
declare
sql varchar;
qu varchar := 'tabletemp_';
begin
qu := qu ||ids ||'_'|| pcname;
sql := 'Drop view if exists "'||qu||'"';
raise info '%',sql;
execute sql;
end;
$$
language plpgsql;
这里我在表名周围添加双引号。