网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.2Gb or Not 2Gb.
.安装 PHP 和 Oracle 10g 即时客户.
.杜绝安全隐患被忽视的Oracle安全.
.深入探讨Oracle数据缓冲区内部机.
.Linux上的集群及其配置实例.
.ORACLE Virtual Private Databas.
.RFID技术与中国自主产品对接.
.Oracle-MTS经过防火墙的设定.
.如何快速建立多个帐号.
.Oracle Forms9i工具栏的实现.
.配置shark与oracle的连接.
.部署和管理应用程序的 Oracle AS.
.如何实现逻辑数据模型.
.直接挖掘数据文件的数据.
.Oracle 10g vs PostgreSQL 8 vs .
.关于库存余额、财务收支余额的计.
.在两机器间克隆数据库.
.linux怎么给一个普通用户reboot权.
.oracle 10G RAC之VIP探讨(2).
.静态 SQL语句中的“动态”功能.

ORACLE存储过程管道通信的例子

发表日期:2008-2-9



  /*
  管道通信的例子程序
  注重:1要明文给于用户 EXECUTE ANY PROCEDURE 权力可能正常使用DBMS_PIPE
   2设定:set serveroutput on
  共有两个过程writepipe和readpipe
  在sqlplus中通过@writepipe.sql的方式执行,可以创始过程writepipe和readpipe
  通过 call writepipe('我的测试信息'); 写信息
  用 call readpipe() 读信息
  2002年4月12日
  */
  
  CREATE OR REPLACE PROCEDURE writepipe(msg VARCHAR2) AS
   n integer;
   status NUMBER;
  BEGIN
  -- DBMS_PIPE.PACK_MESSAGE(LENGTH(msg));
   DBMS_PIPE.PACK_MESSAGE(msg); --把信息放入缓冲区
   status := DBMS_PIPE.SEND_MESSAGE('mypipe',1); --信息放入管道mypipe,系统等待时间为1秒
  --假如status := DBMS_PIPE.SEND_MESSAGE('mypipe');那么就是等待1000天
   IF status != 0 THEN
   raise_application_error(-20099, 'Debug error');
   END IF;
  END;
  /
  CREATE OR REPLACE PROCEDURE readpipe AS
  info varchar(30);
  status integer;
  begin
  --接受等待时间为1秒,可以为0,立即调用或DBMS_PIPE.RECEIVE_MESSAGE('mypipe') 等待100天
   status:= DBMS_PIPE.RECEIVE_MESSAGE('mypipe',1);
  --status:= DBMS_PIPE.RECEIVE_MESSAGE('mypipe');
  --status为0为成功可以UNPACK_MESSAGE,1为超时没有数据,2为信息太大,3为内部错误
   IF status <> 0 THEN
   DBMS_OUTPUT.PUT_LINE('没有信息返回,返回状态为:'status);
   return;
  -- RAISE_APPLICATION_ERROR(-20021,
   -- 'execute_sql: Error while receiving.
  -- Status = ' status);
   END IF;
  
   DBMS_PIPE.UNPACK_MESSAGE(info);
   DBMS_OUTPUT.PUT_LINE('INFO=' INFO);
  end;
  /
上一篇:ORACLE 应用经验(4)-加密程序 人气:896
下一篇:测试ORACEL的文本文件导入导出 人气:1012
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐