powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / OUT и INOUT
8 сообщений из 8, страница 1 из 1
OUT и INOUT
    #33549132
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можете привести примеры процедур, в которых используются OUT и INOUT параметры.
Я так понимаю что такого рода параметры достаточно нужная опция, но как их использовать мне честно говоря не понятно.
...
Рейтинг: 0 / 0
OUT и INOUT
    #33549257
aTz (msk)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Например вот:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE OR REPLACE FUNCTION "public"."get_doc_parents" (inout node_id integer) RETURNS SETOF integer AS
$body$
DECLARE
  parent_id INTEGER;
BEGIN
  IF node_id IS NOT NULL THEN
    RETURN NEXT;
    WHILE node_id IS NOT NULL LOOP
      SELECT parent_id FROM docs WHERE id = node_id INTO parent_id;
        IF parent_id IS NULL THEN
          RETURN;
        END IF;
        node_id := parent_id;
        RETURN NEXT;
    END LOOP;
  END IF;
  RETURN;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

Затем делаем:
Код: plaintext
SELECT * FROM get_doc_parents( 300 );

Вернёт всех "родителей" ветки с id = 300.

С параметрами OUT всё тоже самое, только их передавать нельзя в вызов функции, а можно только возвращать.
...
Рейтинг: 0 / 0
OUT и INOUT
    #33549386
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за пример.
А почему вы использовали INOUT ведь в Вашем случае достаточно было бы использовать IN?
...
Рейтинг: 0 / 0
OUT и INOUT
    #33549590
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АналитикСпасибо за пример.
А почему вы использовали INOUT ведь в Вашем случае достаточно было бы использовать IN?

Он менял node_id. Если бы это был только IN-параметр, то строка node_id := parent_id;выдавала бы ошибку.
...
Рейтинг: 0 / 0
OUT и INOUT
    #33549616
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, ясно спасибо. А можно привести пример просто с OUT параметром.

Может у кого-то есть ссылка на подробное описание OUT и INOUT параметров, т.к. в help недостаточно информации.
...
Рейтинг: 0 / 0
OUT и INOUT
    #33550002
Фотография Иман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну дык OUT по аналогии с ораклом:
присваиваеть ему можно, а в правой части выражения использовать незя
...
Рейтинг: 0 / 0
OUT и INOUT
    #33550016
aTz (msk)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пожалуйста

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE OR REPLACE FUNCTION range10 (out id integer, out name text) RETURNS SETOF record AS
$body$
DECLARE
  rec RECORD;
BEGIN
  FOR rec IN EXECUTE 'SELECT id, name FROM table1' LOOP
    id := rec.id;
    name := rec.name;
    RETURN NEXT;
  END LOOP;
  RETURN;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

Далее делаем
Код: plaintext
SELECT id, name FROM range10()

И в результате получаем все строки с полями id и name из таблицы table1
...
Рейтинг: 0 / 0
OUT и INOUT
    #33550080
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое, теперь понятно.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / OUT и INOUT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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