oracle系统包——DBMS_PIPE用法
DBMS_PIPE包用于在同一例程(实例)的不同会话之间进行通信;注意,如果用户要执行包dbms_pipe中的过程和函数,则必须要为用户授权。
sql>conn sys/oracle as sysdba;
sql>grant execute on dbms_pipe to scott;
一、管道:
1)、公有管道:所有数据库用户可访问。
2)、私有管道:只能建立管道的数据库用户可访问。
二、DBMS_PIPE包的过程和函数解析
CREATE_PIPE:用于建立公用管道或私有管道。如果将参数private设置为TRUE,则建立私有管道;如果设置为FALSE,则建立公用管道。
eg:
declare
falg int;
begin
flag:=dbms_pipe.create_pipe('public_pipe',8192,false);
if flag=0 then
dbms_output.put_line('建立公用管道成功');
end if;
end;
/
PACK_MESSAGE:用于将消息写入到本地消息缓冲区
SEND_MESSAGE:用于将本地消息缓冲区中的内容发送到管道
RECEIVE_MESSAGE:用于接收管道消息
NEXT_ITEM_TYPE:用于确定本地消息缓冲区下一项的数据类型。
如果该函数返回0,则表示管道没有任何消息;
如果返回6,则表示下一项的数据类型为number;
如果返回9,则表示下一项的数据类型为varchar2;
如果返回11,则表示下一项的数据类型为rowid;
如果返回12,则表示下一项的数据类型为date;
如果返回23,则表示下一项的数据类型为raw.
UNPACK_MESSAGE:用于将消息缓冲区的内容写入到变量中.
REMOVE_PIPE:用于删除已经建立的管道
PUGER:用于清除管道中的内容
RESET_BUFFER:用于复位管道缓冲区
UNIQUE_SESSION_NAME:用于为特定会话返回惟一的名称,并且名称的最长度为30字节.
案例:
1、创建一个发消息的过程:
CREATE OR REPLACE PROCEDURE SEND_MESSAGE(PIPENAME VARCHAR2,
MESSAGE VARCHAR2) IS
FLAG NUMBER;
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;
/
2、创建一个接收消息的包
CREATE OR REPLACE PROCEDURE RECEIVE_MESSAGE(PIPENAME VARCHAR2,
MESSAGE OUT VARCHAR2) IS
FLAG NUMBER;
BEGIN
FLAG := DBMS_PIPE.RECEIVE_MESSAGE(PIPENAME);
IF FLAG = 0 THEN
DBMS_PIPE.UNPACK_MESSAGE(MESSAGE);
FLAG := DBMS_PIPE.REMOVE_PIPE(PIPENAME);
END IF;
END;
/
3、运行包
--在一个会话中执行:
exec send_message('pipe','I send message');
--在另一会话中执行:
var message varchar2(200);
exec receive_message('pipe',:message);
print message;
执行结果如下:
PL/SQL procedure successfully completed
message
———
I send message
oracle系统包——DBMS_PIPE用法的更多相关文章
- oracle系统包——dbms_random用法及order by 小结(转)
dbms_random是一个可以生成随机数值或者字符串的程序包. 这个包有initialize().seed().terminate().value().normal().random().strin ...
- oracle系统包——dbms_alert用法
oracle内部提供的在数据库内部和应用程序间通信的方式有以下几种:1.警报,就是DBMS_ALERT包提供的功能:2.管道,由DBMS_PIPE提供:3.高级队列,这个就很复杂,当然提供的功能也是很 ...
- oracle系统包——dbms_job用法(oracle定时任务)
用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务. 一.dbms_job涉及到的知识点1.创建job:variable jobno number;dbms_job.su ...
- oracle系统包——dbms_random用法
oracle中随机数的包的源文件目录:{oracle_home}\rdbms\admin\dbmsrand.sql 1.返回0~1间的随机数(包括0和1)sql> select dbms_ran ...
- oracle系统包—-dbms_output用法
dbms_output包主要用于调试pl/sql程序,或者在sql*plus命令中显示信息(displaying message)和报表,譬如我们可以写一个简单的匿名pl/sql程序块,而该块出于某种 ...
- oracle系统包——dbms_transaction用法
用于在过程,函数和包中执行sql事务处理语句. 1.read_only用于开始只读事务,其作用与sql语句set transaction read only完全相同2.read_write用于开始读写 ...
- oracle系统包——dbms job用法(oracle定时任务)
用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务. 一.dbms_job涉及到的知识点1.创建job:variable jobno number;dbms_job.su ...
- .Net程序员学用Oracle系列(29):PLSQL 之批量应用和系统包
1.批量数据操作 1.1.批量生成数据 1.2.批量插入数据 2.批量生成脚本 3.生成数据字典 4.常见系统包 4.1.DBMS_OUTPUT 4.2.DBMS_RANDOM 4.3.其它系统包及常 ...
- ORACLE中DBMS_SQL的用法
ORACLE中DBMS_SQL的用法 对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步骤: open cursor---> parse---> define ...
随机推荐
- jQuery制作多表格固定表头、切换表头的特效
做了好几天的固定表头特效,总算是搞定了.先说明一下基本功能:我们在一个网页上浏览很多份表格数据的时候,肯定会碰到很多分不清表头,也分不清表 格是哪个的情况,这个时候我们就希望能有一种功能,就是我们再下 ...
- 安装MySQL提示:应用程序无法正常启动(0xc000007b)
转:https://blog.csdn.net/zztingfeng/article/details/80155624 解决:在百度上下载DirectX修复工具(增强版),修复即可. 链接:http: ...
- 关于.NET C#调用Sqlite的总结一
--前记 由于自己的密码太多又不容易记住,经常性的会忘记.所以想找个管理软件管理下,可用网上下载的担心不安全.于是自己开始动手写个属于自己的密码管理软件. 因为自己一直做的是WEB开发,对WPF懂的不 ...
- ES_HEAD基本查询操作
一.基本查询操作 选择索引 设置type查询条件 搜索 操作说明如图: 二.must, must not,should的区别 must 返回的文档必须满足must子句的条件 ...
- django admin后台的简单使用
创建自己的model.py文件 from django.db import models from django.contrib.auth.models import ( BaseUserManage ...
- “全栈2019”Java第十九章:关系运算符、条件运算符和三元运算符
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- [ActionScript 3.0] PrintJob打印功能
package { import flash.display.Bitmap; import flash.display.Sprite; import flash.events.MouseEvent; ...
- java 线程 获取当前线程
java 线程 获取当前线程 Thread th=Thread.currentThread(); System.out.println("Tread name:"+th.getNa ...
- 深度学习(tensorflow) —— 自己数据集读取opencv
先来看一下我们的目录: dataset1 和creat_dataset.py 属于同一目录 mergeImg1 和mergeImg2 为Dataset1的两子目录(两类为例子)目录中存储图像等文件 核 ...
- python学习,day2:列表的复制,字符串的处理
---恢复内容开始--- 元组(tuple)是只读列表,不能修改,列表用中括号,元组用小括号.只能用index和count两个命令. ---恢复内容结束--- 字符串处理的代码 # coding=ut ...