как получить набор данных из хранимой процедуры

На сервере имеется таблица с большим количеством строк.
Необходимо обработать ее и получить набор данных (массив данных) по структуре не совпадающий с исходной таблицей.

Предполагаю что нужно сделать хранимую процедуру,которая на входе получает параметры, на выходе двумерный массив.

Вопрос: как это сделать? Есть ли готовые примеры?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

как-то так

как-то так

CREATE OR REPLACE FUNCTION s_mytable(IN ivar bigint,
                                     OUT oid bigint, 
                                     OUT oname text)
  RETURNS SETOF record AS
$BODY$
SELECT p.id, 
       p.name 
  FROM mytable p WHERE p.var=$1
ORDER BY p.id       
$BODY$ LANGUAGE 'sql'

Здравствуйте, правильно ли я

Изображение Useful

Здравствуйте, правильно ли я понимаю, что такого рода процедура будет возвращать только одну строку? И чтобы обработать таблицу и на ее основе создать другую, нужна другая процедура, которая будет вызывать Вашу с разными ключами?
А если мне нужна процедура возвращающая таблицу целиком, не строку, есть ли такая возможность или обязательно нужно использовать курсор? дело в том, что мой клиент напрочь отказывается работать в рамках одной транзакции (при выполнении begin; ругается, соответственно открыть курсор и извлечь строки не получается.

Процедура вернет набор строк

Процедура вернет набор строк удовлетворяющих условию

спасибо, за ответ. А не могли

Изображение Useful

спасибо, за ответ. А не могли бы сказать, есть ли возможность результатом процедуры получать не набор строк из массивов полей, а именно таблицу с несколькими столбцами.

Попробуйте так select * from

Попробуйте так
select * from s_mytable(1)

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023