powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / вызов plpgsql процедуры из другой процедуры
5 сообщений из 5, страница 1 из 1
вызов plpgsql процедуры из другой процедуры
    #34138067
tier.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, господа. Вопрос, на который не смог найти ответ в докуменации.
Мне нужно в plpgsql процедуре, в цикле, вызывать другую процедуру, передавая ей разные параметры.
Пробовал по разному, но заработало только:
query := 'SELECT func1(' || QUOTE_LITERAL(tn) || ')';
EXECUTE query;

Вопрос, нельзя ли выполнить func1 как-то иначе, без SELECT'а? Ведь он здесь, мне кажется ни к чему. И вывод этой процедуры мне абсолютно не нужен, надо только чтобы она выполнила свою работу. При таком же способе запуска еще печатаются в консоль непонятные сообщения, которые тоже мне ни к чему абсолютно:
CONTEXT: SQL statement "SELECT func1('tabl_594')"
PL/pgSQL function "func1" line 9 at execute statement

И это печатается многократно, столько раз, сколько в цикле вызывалась func1.
Как с этим бороться? Может есть другой, более правильный способ выполнения процедуры...

Спасибо.
...
Рейтинг: 0 / 0
вызов plpgsql процедуры из другой процедуры
    #34138270
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PostgreSQL 7.4 Documentation
37.6.3. Executing an Expression or Query With No Result

Sometimes one wishes to evaluate an expression or query but discard the result (typically because one is calling a function that has useful side-effects but no useful result value). To do this in PL/pgSQL, use the PERFORM statement:

PERFORM query;

This executes query, which must be a SELECT statement, and discards the result. PL/pgSQL variables are substituted in the query as usual. Also, the special variable FOUND is set to true if the query produced at least one row or false if it produced no rows.

Note: One might expect that SELECT with no INTO clause would accomplish this result, but at present the only accepted way to do it is PERFORM.

An example:

PERFORM create_mv(''cs_session_page_requests_mv'', my_query);
...
Рейтинг: 0 / 0
вызов plpgsql процедуры из другой процедуры
    #34138431
tier.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, именно это мне и нужно было - запускать процедуру без SELECT. Работатет. Я, кстати, до того как задать вопрос пробовал PERFORM, но, видно, запускал его неправильно - тогда не заработало. А сейчас - нормально.
Но, все те же загадочные сообщения по прежнему выводятся:
CONTEXT: SQL statement "SELECT func1('tabl_594')"
PL/pgSQL function "func1" line 9 at execute statement

Что бы это могло значить?
...
Рейтинг: 0 / 0
вызов plpgsql процедуры из другой процедуры
    #34138460
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотрите параметр client_min_messages в конфигурационном файле <<путь к постгресу>>/data/postgresql.conf
...
Рейтинг: 0 / 0
вызов plpgsql процедуры из другой процедуры
    #34138490
tier.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эти сообщения, видимо, имеют уровень notice.
По дефолту notice и есть значение этого параметра в конфиге. Если ставлю следующуй более низкий уровень (warning), эти сообщения пропадают. Так же как и мои, нужные мне, котрые я вывожу с пом. RAISE NOTICE :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / вызов plpgsql процедуры из другой процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]