【问题标题】:How to save data in SQL and loop on it?如何在 SQL 中保存数据并在其上循环?
【发布时间】:2020-01-08 10:31:34
【问题描述】:

一旦我运行第一个查询,我得到以下结果:

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

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

【问题讨论】:

    标签: sql oracle plsql oracle10g sqlplus


    【解决方案1】:

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

    where request_no in (select request_no from my_temporary_table)
    

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

    【讨论】:

      【解决方案2】:

      您可以通过加入表将这些组合为仅 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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-17
        • 2016-07-30
        • 2017-06-28
        • 2017-10-19
        • 1970-01-01
        • 2018-03-08
        • 2014-01-15
        相关资源
        最近更新 更多