Здесь мне нужно вызвать функцию с некоторыми параметрами.
Пример:
Функция:
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);
Попробуй это:
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;
Здесь я добавляю двойную кавычку вокруг имени таблицы.