PURGE¶
此过程用于清空指定的管道的内容。
声明¶
procedure purge(pipename in varchar2);
结构¶
| 参数 | 说明 |
|---|---|
| pipename | 管道的名称 |
示例¶
drop procedure send_message4 cascade;
drop procedure receive_message4 cascade;
drop procedure remove_message cascade;
exec DBMS_PIPE.reset_buffer(); --清空缓冲区,会把未发送的本地缓冲区中的消息清空
create or replace procedure remove_message(pipename varchar2)
is
flag int;
begin
flag := DBMS_PIPE.REMOVE_PIPE('mypublicpipe');
end;
/
create or replace procedure send_message4() is
declare
v_statpipe2 int;
v_pubchar varchar2(100):='This is a text string';
v_pubdate date := to_date('2017-05-05');
v_pubnum number :=109;
begin
v_statpipe2 := dbms_pipe.create_pipe('mypublicpipe',8192,FALSE);
dbms_pipe.pack_message(v_pubchar);
dbms_pipe.pack_message(v_pubdate);
dbms_pipe.pack_message(v_pubnum);
v_statpipe2 := dbms_pipe.send_message('mypublicpipe',10,8192);
end;
/
create or replace procedure receive_message4() is
declare
v_statpipe2 int;
v_holdtype int;
v_holdchar varchar2(100);
v_holddate date;
v_holdnum number;
begin
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);
dbms_output.put_line(v_holdnum);
dbms_output.put_line(v_holdchar);
end;
/
exec send_message4();
[2]exec receive_message4();
2017-05-05
109
This is a text string
exec send_message4();
exec DBMS_PIPE.PURGE('mypublicpipe'); --清空管道中的内容
[2]exec receive_message4(); --管道被清空接收不到消息
exec remove_message('mypublicpipe'); --删除管道
drop procedure remove_message cascade;
drop procedure send_message4 cascade;
drop procedure receive_message4 cascade;