Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
31.10.2021, 08:53
|
|||
---|---|---|---|
|
|||
Запуск процедуры через переменную |
|||
#18+
Здравствуйте, уважаемые форумчане. В MS SQL SERVER можно сделать такой финт, например, в некоторой таблице содержатся имена хранимых процедур. Все хранимые процедуры имеют одну и ту же сигнатуру (т.е. количество и типы аргументов одинаковые у всех). Если в строковую переменную получить имя этой процедуры, тогда можно запустить процедуру, указав имя переменной. Код: sql 1. 2. 3. 4. 5.
Как можно сделать аналогичный трюк в plpgSQL (PostgreSQL 14) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.10.2021, 09:21
|
|||
---|---|---|---|
|
|||
Запуск процедуры через переменную |
|||
#18+
Сотрудник Главного Управления Здравствуйте, уважаемые форумчане. В MS SQL SERVER можно сделать такой финт, например, в некоторой таблице содержатся имена хранимых процедур. Все хранимые процедуры имеют одну и ту же сигнатуру (т.е. количество и типы аргументов одинаковые у всех). Если в строковую переменную получить имя этой процедуры, тогда можно запустить процедуру, указав имя переменной. Код: sql 1. 2. 3. 4. 5.
Как можно сделать аналогичный трюк в plpgSQL (PostgreSQL 14) ? через выполнение динамических команд https://www.postgresql.org/docs/12/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN PS: что то многовато последнее время вопросом про как mssql код на постгрес переводить. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.10.2021, 09:41
|
|||
---|---|---|---|
|
|||
Запуск процедуры через переменную |
|||
#18+
Maxim Boguk, извините, я не совсем понял, по ссылке, указанной вами, примеры, как с помощью EXECUTE выполнить различные команды типа SELECT, INSERT, UPDATE но мне нужны не эти команды, а именно запуск существующих хранимых процедур. И, если можно, покажите пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.10.2021, 11:10
|
|||
---|---|---|---|
|
|||
Запуск процедуры через переменную |
|||
#18+
Сотрудник Главного Управления Maxim Boguk, извините, я не совсем понял, по ссылке, указанной вами, примеры, как с помощью EXECUTE выполнить различные команды типа SELECT, INSERT, UPDATE но мне нужны не эти команды, а именно запуск существующих хранимых процедур. И, если можно, покажите пример. А как по вашему хранимые процедуры запускаются по синтаксису? И что вам мешает через EXECUTE вызвать хранимую процедуру? Код: sql 1.
-- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.10.2021, 12:50
|
|||
---|---|---|---|
|
|||
Запуск процедуры через переменную |
|||
#18+
Maxim Boguk, Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2022, 15:24
|
|||
---|---|---|---|
|
|||
Запуск процедуры через переменную |
|||
#18+
Maxim Boguk, Вопрос немного усложняется. Во-первых: работает не так, как вы написали, а вот так: Код: plsql 1. 2.
Во-вторых: самый последний параметр процедуры - имеет модификатор INOUT. Так вот, выходное значение не попадает в arg4, хотя процедура выполняется. Как сделать так, чтобы выходное значение записывалось в arg4 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2022, 18:34
|
|||
---|---|---|---|
|
|||
Запуск процедуры через переменную |
|||
#18+
Сотрудник Главного Управления Maxim Boguk, Вопрос немного усложняется. Во-первых: работает не так, как вы написали, а вот так: Код: plsql 1. 2.
Во-вторых: самый последний параметр процедуры - имеет модификатор INOUT. Так вот, выходное значение не попадает в arg4, хотя процедура выполняется. Как сделать так, чтобы выходное значение записывалось в arg4 ? call это для процедуры perform для функции поскольку 90% pl/pgsql кода он на функциях (процедуры - для очень особых случаев и только с 12 версии) - я привёл пример который обычно работает. про inout в сочетании с динамическими вызовами - я бы попробовал следующим образом (важно - я НЕ ПРОВЕРЯЛ идея на вскидку выглядит рабочей): Код: sql 1.
Если не работает - тогда интересно будет... -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.01.2022, 07:22
|
|||
---|---|---|---|
|
|||
Запуск процедуры через переменную |
|||
#18+
Maxim Boguk Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.01.2022, 08:59
|
|||
---|---|---|---|
|
|||
Запуск процедуры через переменную |
|||
#18+
Сотрудник Главного Управления, Если на выход только одина параметр, то наверное должно сработать так Код: plsql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=1993719]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 251ms |
total: | 363ms |
0 / 0 |