PostgreSQL: ОШИБКА: ошибка синтаксиса в или рядом с "-"

Вопрос:

Здесь мне нужно вызвать функцию с некоторыми параметрами.

Пример:

Функция:

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);

Ответ №1

Попробуй это:

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;

Здесь я добавляю двойную кавычку вокруг имени таблицы.

Оцените статью
TechArks.Ru
Добавить комментарий