#postgresql #stored-procedures
#postgresql #хранимые процедуры
Вопрос:
Я использую Postgres версии 13.1. Я хочу иметь один файл, в котором я мог бы хранить все хранимые процедуры и создавать их одним выстрелом. Но когда я помещаю несколько хранимых процедур в один файл, я получаю следующую ошибку. Чего мне не хватает?
В моем файле test.sql у меня есть следующее содержимое:
create or replace procedure tmp1(
)
language plpgsql as
$
declare
l_count integer;
begin
select 1 into l_count;
raise info 'count: %', l_count;
end;
$
create or replace procedure tmp2(
)
language plpgsql as
$
declare
l_count integer;
begin
select 1 into l_count;
raise info 'count: %', l_count;
end;
$
Если у меня есть только первая процедура, она создается, и я могу успешно ее вызвать. Но в тот момент, когда у меня появляется вторая идентичная процедура с другим именем, она выдает следующую ошибку (при запуске из psql):
psql=> i test.sql
psql:test.sql:23: ERROR: syntax error at or near "create"
LINE 12: create or replace procedure tmp2(
Комментарии:
1. Точка с запятой должна быть после всего
create procedure/function
оператора (как и для любых других операторов в сценариях), и это не обязательно в конце тела:create function ... as $$ begin ...end $$;
Ответ №1:
Хорошо — сразу после публикации я попытался поставить «;» после окончания первой процедуры, и это работает