powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как вызывать процедуру Postgres с OUT-параметрами
4 сообщений из 4, страница 1 из 1
Как вызывать процедуру Postgres с OUT-параметрами
    #39725868
ArkadyL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Для одного проекта у нас выбрали Postgres.
С непривычки у меня не получается реализовать простейшую, казалось бы, вещь.

Если на SQL Server я создавал, процедуры с OUT-параметрами и вызывал их из внешней программы таким образом (2 OUT-параметра и 2 обычных)
Код: sql
1.
EXEC процедура ?@m.par1, ?@m.par2, ?m.par3, ?m.par4


при этом мои переменные m.par1 и m.par2 после выполнения процедуры принимали значения соответствующих параметров,
то Postgres, по моим наблюдениям, вообще не требует передачи в процедуру OUT-параметров. То есть, в моём случае в процедуру, вроде, надо передавать два параметра. Да и в DBeaver она отображается не с четырьмя, а с двумя параметрами (OUT-параметры игнорируются)
Подскажите, пожалуйста, как, создать и вызвать из программы, для примера, простейшую процедуру получения нового уникального кода с использованием OUT-параметра типа SQL SERVERовской

Код: sql
1.
2.
3.
4.
5.
CREATE PROCEDURE dbo.new_id  
  @nRetVal int OUTPUT  
  AS  
  BEGIN  
  UPDATE id_counter SET @nRetVal = id_counter.id, id_counter.id = id_counter.id + 1



Надо использовать команду EXECUTE процедура
или
конструкцию select <моя переменная> from процедура(параметр)?

Необходимо, чтобы я из своей программы передал переменную нужного типа, но с произвольным именем, в процедуру Postgres, и после выполнения этой процедуры переменная приняла бы значение, которое присвоилось в процедуре соответствующему параметру.
...
Рейтинг: 0 / 0
Как вызывать процедуру Postgres с OUT-параметрами
    #39728476
Фотография DSKalugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArkadyLЕсли на SQL Server я создавал, процедуры с OUT-параметрами и вызывал их из внешней программы таким образом (2 OUT-параметра и 2 обычных)
Код: sql
1.
EXEC процедура ?@m.par1, ?@m.par2, ?m.par3, ?m.par4


при этом мои переменные m.par1 и m.par2 после выполнения процедуры принимали значения соответствующих параметров...


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
-- объявление функции
CREATE FUNCTION sum_n_product (x int, y int, OUT sum int, OUT mul int)
AS 
$$
SELECT x + y, x * y;
$$
LANGUAGE SQL;

-- вызов функции
select sum, mul from sum_n_product(5,9);
-- или
select * from sum_n_product(5,9);
-- результат
sum |mul 
----|----
14  |45  


"как вызывать из программы" зависит от языка программирования и компонентов доступа к данным
...
Рейтинг: 0 / 0
Как вызывать процедуру Postgres с OUT-параметрами
    #39728704
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DSKalugin
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
-- объявление функции
CREATE FUNCTION sum_n_product (x int, y int, OUT sum int, OUT mul int)
AS 
$$
SELECT x + y, x * y;
$$
LANGUAGE SQL;

-- вызов функции
select sum, mul from sum_n_product(5,9);
-- или
select * from sum_n_product(5,9);
-- результат
sum |mul 
----|----
14  |45  



Товарищу также в целях просветления следует отметить, что можно и так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
-- объявление функции
CREATE FUNCTION sum_n_product (OUT sum int, OUT mul int, x int, y int)
AS 
$$
SELECT x + y, x * y;
$$
LANGUAGE SQL;


И при этом вызов не меняется:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
-- вызов функции
select sum, mul from sum_n_product(5,9);
-- или
select * from sum_n_product(5,9);
-- результат
sum |mul 
----|----
14  |45  
...
Рейтинг: 0 / 0
Как вызывать процедуру Postgres с OUT-параметрами
    #39729198
Фотография DSKalugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HawkmoonТоварищу также в целях просветления следует... для начала прочитать документацию:
37.4. Функции на языке запросов (SQL)
37.4.1. Аргументы SQL-функций

37.4.4. Функции SQL с выходными параметрами

4.3. Вызов функций

4.3.1. Позиционная передача

4.3.2. Именная передача

4.3.3. Смешанная передача
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как вызывать процедуру Postgres с OUT-параметрами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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