Oracle基础包之DBMS_PIPE(三)

1、概述
说明:

Oracle管道类似UNIX系统的管道,但不采用OS机制实现,管道信息被缓存到SGA中,当关闭例程时会丢失管道信息,建立公用管道所有数据库用户都可访问,私有管道只能由建立这访问。

作用:

用于在同一例程程的不同会话之间进行管道通信.

注意事项:
--如果用户要执行包dbms_pipe中的过程和函数,则必须要为用户授权.
conn sys/oracle as sysdba;
grant execute on dbms_pipe to scott;
2、包的组成
2.1、create_pipe
作用:

该函数用于建立公用管道或私有管道.如果将参数private设置为TRUE,则建立私有管道;如果设置为FALSE,则建立公用管道.

语法:
dbms_pipe.create_pipe(pipename in varchar2,
maxpipesize in integer default 8192,
private in boolean default true) 
return integer;
-- 其中,pepename指定管道名称,maxpipesize指定管道消息的最大尺寸,private指定管道类型,函数返回0则成功,反之失败。
2.2、pack_message
作用:

该过程用于将变量写入到本地消息缓冲区。

说明:

为了个管道发消息,首先使用过程pack_message将消息写入本地消息缓冲区,然后使用send_message将消息发送到管道。

语法:
dbms_pipe.pack_message(item in varchar2/nchar2/number/date);
dbms_pipe.pack_message_raw(item in raw);
dbms_pipe.pack_message_rowid(item in rowid);
2.3、send_message
作用:

该函数用于将本地消息缓冲区中的内容发送到管道。

语法:
dbms_pipe.send_message(pipename in varchar2,
timeout in integer defalut maxwait,
maxpipesize in integer default 8192) 
return integer;
-- 其中,timeout指定发送消息的超时时间,0成功1超时3中断。
2.4、receive_message
说明:

该函数用于接收管道消息,并将接收到的消息写入到本地消息缓冲区。当接收完管道信息之后,会删除管道消息,管道消息只能被接收一次。

语法:
dbms_pipe.receive_message(pepename in varchar2,
timeout in integer default maxwait) 
return integer;
--其中,返回0接受成功,返回1超时,返回2本地缓冲区不能容纳管道消息,返回3发生中断。
2.5、next_item_type
说明:

该函数用于确定本地消息缓冲区下一项的数据类型。在调用receive_message之后调用。

语法:
dbms_pipe.next_item_type
 return integer;
-- 其中,如果该函数返回0,则表示管道没有任何消息;如果返回6,则表示下一项的数据类型为number;如果返回9,则表示下一项的数据类型为varchar2;
--如果返回11,则表示下一项的数据类型为rowid;如果返回12,则表示下一项的数据类型为date;如果返回23,则表示下一项的数据类型为raw.
2.6、unpack_message
作用:

该过程用于将消息缓冲区的内容取出来写入到变量中,每次只能取一条,需要取出多条需要多次调用。

说明:

在使用函数receive_message接收到管道消息之后,应该使用过程unpack_message取得消息缓冲区的消息。

语法:
dbms_pipe.unpack_message(item out varchar2\nchar\number\date);
dbms_pipe.unpack_message_raw(item out raw);
dbms_pipe.unpack_message_rowid(item out rowid);、
2.7、remove_pipe
作用:

该函数用于删除已经建立的管道

语法:
dbms_pipe.remove_pipe(pepename in varchar2) return integer;
--其中,函数返回0表示成功,否则会显示错误信息。
2.8、purge
说明:

该过程用于清除管道中的内容。

语法:
dbms_pipe.purge(pipename in varchar2);
2.9、reset_buffer
说明:

该过程用于复位管道缓冲区,因为所有管道都共享单个管道缓冲区,所以在使用新管道之前应该复位管道缓冲区。

语法:
dbms_pipe.reset_buffer;
2.10、unique_session_name
说明:

该函数用于为特定会话返回惟一的名称,并且名称的最长度为30字节,对同一会话其值不变。

语法:
dbms_pipe.unique_session_name
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜未央,流年殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值