如何把多条语句统计的结果集 用一个存储全部展示

本文探讨了如何将两个用于创建视图的存储过程合并为一个。通过分析现有的存储过程代码,提出了合并的方法,旨在简化代码并提高执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.
CREATE OR REPLACE PROCEDURE procunit AS
  sqlstr VARCHAR2(2000) := 'create or replace view v_tmp as select d.drugdesc';
BEGIN
  FOR cur1 IN (SELECT DISTINCT u.class FROM unit u) LOOP
    sqlstr := sqlstr || ',count(decode(u.class,''' || cur1.class || ''',1)) ' || cur1.class;
  END LOOP;
  sqlstr := sqlstr || ' from casecrime_drug c left join cddrug d on c.drugid=d.drugid
                      left join casesecurity y on y.caseno=c.caseno
                      left join unit u on u.unitid=y.inputunitid
                      left join suspect s on s.caseno=y.caseno
                      group by d.drugdesc';
  DBMS_OUTPUT.PUT_LINE(sqlstr);
  EXECUTE IMMEDIATE sqlstr;
END;

2。
CREATE OR REPLACE PROCEDURE procunits AS
  sqlstr VARCHAR2(2000) := 'create or replace view v_tmps as select d.drugdesc';
BEGIN
  FOR cur1 IN (SELECT DISTINCT u.class FROM unit u) LOOP
    sqlstr := sqlstr || ',count(decode(u.class,''' || cur1.class || ''',1)) ' || cur1.class;
  END LOOP;
  sqlstr := sqlstr || ' from casecrime_drug c left join cddrug d on c.drugid=d.drugid
                      left join casesecurity y on y.caseno=c.caseno
                      left join unit u on u.unitid=y.inputunitid
                      left join suspect s on s.caseno=y.caseno
                      group by d.drugdesc';
  DBMS_OUTPUT.PUT_LINE(sqlstr);
  EXECUTE IMMEDIATE sqlstr;
END;

比如把上面 的结果拼合在一起?最终的结果要的是如下执行出来的结果
一样:select * from v_tmps union all select * from v_tmp

那么如何把上面两个存储过程写成一个存储过程 。改写成一个存储过程?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值