Oracle存储过程利用游标拼接字符串

发布于 2021-11-27 00:12:00 字数 927 浏览 864 评论 7

想要得到查询结果 类似0Z0001C     0000102508/0000400485/0000102549/0000102510/0000400488

        

create or replace procedure SelectTest(msg out VARCHAR2) as
  v_name varchar2(50);
  cursor c_sell is
    select c.contract_number
      from (select c.roll_plan_number,c.contract_number
              from ecc_oc.sap_contract c, ecc_oc.sales_order_stand t
             where t.roll_plan_number = c.roll_plan_number
             order by c.roll_plan_number);
begin
  open c_sell;
  loop
    fetch c_sell
      into v_name;
    exit when c_sell%notfound;
    msg := msg || v_name || ',';
  end loop;
  close c_sell;
end;

我自己写的     不能实现,大神帮帮忙啊!!!




如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

冷清清 2021-12-01 03:27:38

可是我不会写啊,能详细说一下吗?谢谢啦!!

醉生梦死 2021-12-01 02:17:57

这是什么呢?

复古式 2021-12-01 00:33:26

不需要用游标吧,在函数里面查询出来,拼接不就可以了吗?

陌若浮生 2021-11-30 21:47:51

这是什么?

反话 2021-11-30 20:48:29

oracle貌似也有类似于mysql里面的group_concat函数  你可以搜一下

直接用语句group by一下就可以了不用sp

无法言说的痛 2021-11-30 00:33:05

完美解决了我的问题,谢谢啦~~

青萝楚歌 2021-11-28 11:34:17

11g的写法:

SELECT roll_plan_number, 
       listagg(contract_number,'/') WITHIN GROUP(ORDER BY contract_number) 
FROM TABLE GROUP BY roll_plan_number;

10g的写法:

SELECT roll_plan_number, 
       REPLACE(wm_concat(contract_number),',','/') 
FROM TABLE GROUP BY roll_plan_number;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文