Chinaunix首页 | 论坛 | 博客
  • 博客访问: 254975
  • 博文数量: 91
  • 博客积分: 2016
  • 博客等级: 大尉
  • 技术积分: 820
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-08 23:25
文章分类

全部博文(91)

文章存档

2011年(6)

2010年(6)

2009年(34)

2008年(45)

我的朋友

分类:

2008-07-17 13:55:29

1、再一个session中建立管道

 

set serveroutput on;
declare
v_statpipe1 
integer;
v_statpipe2 
integer;
v_pubchar 
varchar2(100):='This is a text string';
v_pubdate date :
= sysdate;
v_pubnum 
number :=109;

begin
v_statpipe1 :
= dbms_pipe.create_pipe('myprivatepipe');

if v_statpipe1=0 then
dbms_pipe.pack_message(
'privateline1');
dbms_pipe.pack_message(
'privateline2');
v_statpipe1 :
=dbms_pipe.send_message('myprivatepipe');
end if;

dbms_pipe.pack_message(v_pubchar);
dbms_pipe.pack_message(v_pubdate);
dbms_pipe.pack_message(v_pubnum);
--pub pipe
v_statpipe2 := dbms_pipe.send_message('mypublicpipe');
dbms_output.put_line(
'the status of your private pipe is '||v_statpipe1);
dbms_output.put_line(
'the status of your public pipe is '||v_statpipe2);
end;
/

 2、再另外一个session中收取管道中的消息

 

set serveroutput on;
declare
v_statpipe1 
integer;
v_statpipe2 
integer;
v_holdtype 
integer;
v_holdchar 
varchar2(100);
v_holddate date;
v_holdnum 
number;
begin
v_statpipe1 :
= dbms_pipe.receive_message('myprivatepipe',15);
dbms_pipe.unpack_message(v_holdchar);
dbms_output.put_line(v_holdchar);
dbms_pipe.unpack_message(v_holdchar);
dbms_output.put_line(v_holdchar);

--public pipe
v_statpipe2 := dbms_pipe.receive_message('mypublicpipe',10);
loop
v_holdtype :
= dbms_pipe.next_item_type;
if v_holdtype=0 then exit;
elsif v_holdtype
=6 then dbms_pipe.unpack_message(v_holdnum);
elsif v_holdtype
=9 then dbms_pipe.unpack_message(v_holdchar);
elsif v_holdtype
=12 then dbms_pipe.unpack_message(v_holddate);
end if;
end loop;

dbms_output.put_line(v_holddate
||'  '||v_holdnum||'  '||v_holdchar);
end;
/

pipe相关的另外一个函数就是 remove_pipe();

status:=dbms_pipe.remove_pipe('myprivatepipe');
status:=dbms_pipe.remove_pipe('mypublicpipe');

阅读(2326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~