Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
вызов plpgsql процедуры из другой процедуры
|
|||
|---|---|---|---|
|
#18+
Приветствую, господа. Вопрос, на который не смог найти ответ в докуменации. Мне нужно в 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. Как с этим бороться? Может есть другой, более правильный способ выполнения процедуры... Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 23:24 |
|
||
|
вызов plpgsql процедуры из другой процедуры
|
|||
|---|---|---|---|
|
#18+
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); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2006, 09:45 |
|
||
|
вызов plpgsql процедуры из другой процедуры
|
|||
|---|---|---|---|
|
#18+
Спасибо, именно это мне и нужно было - запускать процедуру без SELECT. Работатет. Я, кстати, до того как задать вопрос пробовал PERFORM, но, видно, запускал его неправильно - тогда не заработало. А сейчас - нормально. Но, все те же загадочные сообщения по прежнему выводятся: CONTEXT: SQL statement "SELECT func1('tabl_594')" PL/pgSQL function "func1" line 9 at execute statement Что бы это могло значить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2006, 13:14 |
|
||
|
вызов plpgsql процедуры из другой процедуры
|
|||
|---|---|---|---|
|
#18+
посмотрите параметр client_min_messages в конфигурационном файле <<путь к постгресу>>/data/postgresql.conf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2006, 13:54 |
|
||
|
вызов plpgsql процедуры из другой процедуры
|
|||
|---|---|---|---|
|
#18+
Эти сообщения, видимо, имеют уровень notice. По дефолту notice и есть значение этого параметра в конфиге. Если ставлю следующуй более низкий уровень (warning), эти сообщения пропадают. Так же как и мои, нужные мне, котрые я вывожу с пом. RAISE NOTICE :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2006, 14:38 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=309&tid=2005951]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 271ms |
| total: | 379ms |

| 0 / 0 |
