Oracle 开发篇+dbms_pipe管道技术

说明:本文为面向PL/SQL开发初学者的指导手册
标签:PL/SQL、pipe、管道、循环、优化、加速、dbms_pipe
释义:DBMS_PIPE管道包是Oracle11gR1引入的功能,用来在同一例程(实例)的不同会话之间进行通信
优点:由于PL/SQL中的pipe管道拥有高性能特性,所以常用于循环体的数据传输
易学:文中删去了不需要的多余部分,让初学者一目了然一学就会
温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化


--创建带有管道的存储过程

create or replace  procedure  p_select
is
  i        simple_integer := 1;
  j        simple_integer := 2000000000;
  v        simple_integer := 0;
  message  char(10);
  pipename char(20) := 'pipe_zzt_select';
begin
  for i in 1 .. j loop
    select /*+ no_result_cache */
     count(*) into v
      from zzt.info a, zzt.info b
     where a.sal != b.sal
       and a.id < 100
       and a.sal < 50000;
    if dbms_pipe.receive_message(pipename, 0) = 0 then
      dbms_pipe.unpack_message(message);
      exit when message = 'stop';
    end if;
  end loop;
  v := dbms_pipe.remove_pipe(pipename);
end;
/

--给循环体发送停止信息(pipe_zzt_select)

set timing on
declare
 pipename char(20) :='pipe_zzt_select';
 message  char(10) :='stop';
 flag pls_integer;
begin
    flag := dbms_pipe.create_pipe(pipename);
    if flag = 0 then
        dbms_pipe.pack_message(message);
        flag := dbms_pipe.send_message(pipename);
    end if;
end ;
/

※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~

over

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值