【发布时间】:2011-04-04 17:32:10
【问题描述】:
我有一个相当大的 SQL 语句,它返回一个 id 列表。我需要这个 id-list 作为其他语句的基础。像这样:
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> ) ';
...
当然,我不想每次都为不同的选择选择整个 id-list。
所以,我的想法是使用表/数组:
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 ) ';
...
但这并没有真正起作用。
有谁知道这个问题或有更好的解决方案吗?
【问题讨论】:
标签: arrays oracle select insert