Я довольно новичок в oracle и должен решить следующую проблему.Oracle Хранимые процедуры с использованием временных таблиц
внутри хранимой процедуры Я хочу вернуть 2 курсора, подобные этому.
PROCEDURE MyProcA()
as
begin
open refcursorA FOR
select id, ..... FROM tableA where ..... long series of conditions
open refcursorB FOR
select * FROM table b where b.id IN (select id FROM tableA where ..... long series of conditions)
Вот как у меня есть хранимая процедура на данный момент, но мне не нравится повторение. Предложение where SQL в скобках во втором курсоре точно совпадает с первым курсором. Как загрузить его в таблицу temp или ассоциативный массив или что-то использовать в обоих курсорах.
Заранее спасибо
Возможно, с общим выражением таблицы 'С СТЕ как (SELECT * FROM TABLENAME) SELECT * FROM КТР внутреннее соединение КТР B на A.id + 1 = B .ID) 'обратите внимание, как CTE ссылается дважды. (A & B) .. но без понимания контекста лучше, я не уверен, что это правильный ответ. Плюс, почему курсоры? – xQbert
Сколько строк будет возвращено в первый запрос? Мы говорим о небольшом объеме данных, который имеет смысл хранить в коллекции в памяти? Не могли бы вы создать представление для первого запроса, который вы укажете при открытии обоих курсоров? –
Если выбор из таблицы А не содержит параметров, почему бы не преобразовать это в представление? – Ben