неработает execute ''create table ''||$1||''

прочитал FAQ, но не работает

CREATE OR REPLACE FUNCTION make_table( varchar ) RETURNS VARCHAR AS '
    execute ''create table ''||$1||'' (
        parameter varchar(8) NOT NULL,
    )'';
    return $1;
' LANGUAGE plpgsql;

говорит

ERROR: syntax error в или рядом "execute"
СТРОКА 2:execute ''create table ''||$1||'' (
                 ^

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Кавычки можно

Кавычки можно заменить на double-$-quoting,
т.е. вместо символа ' можно использовать $_любые_символы$
значительно повышает читабельность,
и просто незаменимо при вложенных ковычках - ваш случай.

Выражение, которое хотите выполнить, тоже проверьте.

Не понял как,

Не понял как, можно в качестве примера мой код исправить.

а execute это функция? И она должна быть в pg_catalog? У меня её там нет.

Все разобрался

Все разобрался, просто в кавычках закутался

CREATE OR REPLACE FUNCTION make_table(VARCHAR)  RETURNS VARCHAR AS
$BODY$BEGIN
 
execute 'create table ' || $1|| ' (
parameter varchar(8) NOT NULL
)';
 
RETURN $1;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023