这里我需要用一些参数来调用一个函数。
例子:
功能:

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
                                   ^

问题:调用函数时如何传递此类参数?

最佳答案

你忘了quote_ident

   sql := 'Drop view if exists '|| quote_ident(qu);

但最好使用format
   sql := format('Drop view if exists %I', qu || ids ||'_'|| pcname);

关于postgresql - PostgreSQL:错误:“-”或附近的语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24904568/

10-11 03:27