Я пытаюсь написать хранимую процедуру, в которой имя таблицы происходит динамически. Также он должен проверить, существует ли таблица и создать ее, только если она не существует.
Затем позже я пытаюсь вставить данные в таблицу, как показано ниже. Здесь я передаю pkey
и filedata
в качестве параметров для вставки запроса, в котором pkey
- это строка, а filedata
- это json данные, которые выглядят как { "customer": "John Doe", "items": {"product": "Beer","qty": 6}}
. Я пробовал ниже запроса, но таблица не создается, она выдает сообщение
Примечание: идентификатор publi c .tablename_11111 будет усечен до publi c .tablename_11111
здесь имя таблицы public.tablename_11111
CREATE OR REPLACE FUNCTION public.generate_table(tb_name text)
RETURNS text LANGUAGE 'plpgsql'
COST 100 VOLATILE AS $BODY$
BEGIN
EXECUTE format('
CREATE TABLE IF NOT EXISTS %I(
id serial PRIMARY KEY,
pkey VARCHAR (250) NULL,
fpo_data TEXT NULL
)', tb_name || '_pk');
EXECUTE 'INSERT INTO' || tb_name || '_pk (pkey, fpo_data) VALUES
('|| pkey ||', '|| filedata ||')';
END;
$BODY$;