У меня довольно большой оператор SQL, который возвращает список идентификаторов.Мне нужен этот список в качестве базы для других заявлений.Например:
open crs_result1 for ' select * from ... where id in ( select <ids> from <base_statement> ) ';
open crs_result2 for ' select * from ... where id in ( select <ids> from <base_statement> ) ';
open crs_result3 for ' select * from ... where id in ( select <ids> from <base_statement> ) ';
...
Конечно, я не хочу каждый раз выбирать весь список идентификаторов для разных вариантов выбора.
Итак, моя идея заключалась в том, чтобы использовать таблицу / массив:
TYPE gt_result_rec IS RECORD
(
id NUMBER
);
TYPE gt_result_tab IS TABLE OF gt_result_rec INDEX BY BINARY_INTEGER;
t_results gt_result_tab;
execute immediate 'insert into t_results select <ids> from <base_statement>';
И затем используйте его для всех других утверждений:
open crs_result1 for ' select * from ... where id in ( select id from t_results ) ';
...
Но это на самом деле не работает.
Кто-нибудь знает проблему ИЛИлучшее решение для этого?