如何在SQL中保存数据并对其进行循环?

第一次运行查询后,我得到以下结果:

REQUEST_NO R
---------- -
   4309300 A
   4300983 C

并且我想比较R列是否不同于“ C”,运行第二个查询,并对REQUEST_NO列中不同于C的每个元素执行相同的操作

SELECT REQUEST_NO,REQUEST_STS 
FROM  PORT_REQUEST 
WHERE REQUEST_NO IN (SELECT DISTINCT REQUEST_NO 
                     FROM SUB_PORT_REQUEST 
                     WHERE SUBSCRIber_NO = replace(replace('&CTN','-',''),' ',''));

Enter value for ctn: 5161890110

REQUEST_NO R
---------- -
   4309300 A
   4300983 C


SELECT act_SEQ_NO 
FROM SUB_PORT_REQUEST 
WHERE REQUEST_NO=&Req_No 
AND ROWNUM <=1 
ORDER BY act_SEQ_NO DESC;

Enter value for req_no: 4309300

act_SEQ_NO
----------
  91180671

我希望将所有值保存在数组或其他内容中,并且可以对其进行迭代,有人可以帮忙吗?

solanum 回答:如何在SQL中保存数据并对其进行循环?

如果要保留在SQL * Plus中,一个选项是创建一个(全局临时表)表,将第一个查询的结果存储到该表中,然后重写第二个查询以将这些结果用作

where request_no in (select request_no from my_temporary_table)

另一种方法是切换到PL / SQL并编写一个接受CTN作为参数的过程。它(PL / SQL)允许您使用不同的方式将第一个查询的结果存储到表(如前)或数组中。

,

通过联接表,您可以将这些仅合并为1个查询。我不确定我是否知道如何处理“ and rownum

select act_seq_no
  from ( select spr.act_seq_no 
           from sub_port_request spr
           join port_request     pr
             on (spr.request_no = pr.request_no and
                 pr.request_sts != 'C'
                )
          where spr.subscriber_no = replace(replace('&CTN','-',''),' ','')
          order by spr.act_seq_no desc
       )
 where rownum<=1;
本文链接:https://www.f2er.com/2805275.html

大家都在问