powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Написать функцию, возвращающую набор данных.
3 сообщений из 3, страница 1 из 1
Написать функцию, возвращающую набор данных.
    #40073581
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил переделать View в функцию, принимающую параметры.
Т.е. будет сначала несколько строк вычислений переменных, а потом один селект (или больше одного, но возвращается 1 набор данных).
Как это сделать на pl/pgsql, чтобы я мог потом сделать селект этой ф-ии в pgadmin или dbforge studio и увидеть вернувшиеся строки?

Для oracle это была бы ф-я, возвращающая sys_refcursor и я бы вызвал её в pl/sql developer типа
Код: plsql
1.
select my_func (p1, p2) from dual


Для pl/pgsql ф-я, возвращающая refcursor, мне подойдёт?
...
Рейтинг: 0 / 0
Написать функцию, возвращающую набор данных.
    #40073592
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mnbvcx
Решил переделать View в функцию, принимающую параметры.
Т.е. будет сначала несколько строк вычислений переменных, а потом один селект (или больше одного, но возвращается 1 набор данных).
Как это сделать на pl/pgsql, чтобы я мог потом сделать селект этой ф-ии в pgadmin или dbforge studio и увидеть вернувшиеся строки?

Для oracle это была бы ф-я, возвращающая sys_refcursor и я бы вызвал её в pl/sql developer типа
Код: plsql
1.
select my_func (p1, p2) from dual


Для pl/pgsql ф-я, возвращающая refcursor, мне подойдёт?


Это делается через RETURNS TABLE
https://www.postgresql.org/docs/13/plpgsql-declarations.html#PLPGSQL-DECLARATION-PARAMETERS
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Another way to declare a PL/pgSQL function is with RETURNS TABLE, for example:

CREATE FUNCTION extended_sales(p_itemno int)
RETURNS TABLE(quantity int, total numeric) AS $$
BEGIN
    RETURN QUERY SELECT s.quantity, s.quantity * s.price FROM sales AS s
                 WHERE s.itemno = p_itemno;
END;
$$ LANGUAGE plpgsql;



и далее select * from функция(параметры);

Или через RETURNS SETOF (но это менее гибко-удобно).

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Написать функцию, возвращающую набор данных.
    #40073596
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk, RETURNS TABLE не подходит, т.к. подразумевает определение всех полей в резалтсете на выходе.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Написать функцию, возвращающую набор данных.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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