У меня интересная проблема с работы.У меня есть процедура Oracle, написанная кем-то еще, которая возвращает набор данных (многостолбцовый, многострочный) для одного входного идентификатора человека.Мне нужно использовать эту процедуру, чтобы получить набор данных для всех идентификаторов людей.
Процедуру можно запросить, приведя вывод в виде таблицы:
"select * from table (package.proc(in_ID))"
Единственный способ, которым я знаю, какзапросить это, чтобы сделать несколько вызовов proc, как это:
select ID,
(select col1 from table(package.proc(persons.ID)) as col1,
(select col2 from table(package.proc(persons.ID)) as col2, --(etc...)
from persons
Однако, для количества строк и столбцов, которые мне нужно получить из этой вещи, это ужасно неэффективно и вызывает тайм-ауты сервера.Кроме того, подвыборы могут получить только одну строку из процедуры, поэтому у меня также есть пропущенные строки (или если он возвращает более одной строки, это приводит к ошибкам в подвыборке).
Есть ли способ сделать это, который не 'т переписать процедуру, чтобы вернуть данные для всех идентификаторов человека?