选择显示字体大小

使用oracle实现实时通信

 由于oracle不提供用于实时输出消息的工具, oracle数据库开发者总是要面临实时监视他们的储备过程执行的挑战。他们必须使用dbms_output.put_line调用,这个调用直到过程完成才返回结果。
  在本文中,我想演示如何从oracle8i数据库直接发送电子邮件,作为一种实时通信解决方案。这样我们要监视存储过程就不再需要等待它们完成了,这样的方法还为开发者提供了其他的一些好处:
      . 可以在几分钟内调试一些很长的批处理过程,而不需要等几个小时;
   . 计算用于指定代码块所需的执行时间;
  这就需要解决一个问题,我们如何从运行的存储过程中输出消息以便我们可以即时检查它们,即使我们不在办公场所?我们的做法是把所有必需的过程与函数包装在自定义的包中,然后使用oracle8i utl_smtp包直接地从oracle数据库中发送电子邮件。下面我将详细讲解一些这个过程。
  oracle的utl_smtp包
  在oracle8i中引入了utl_smtp包(smtp代表simple mail transfer protocol简单邮件传送协议,使用tcp端口25在客户机和服务器之间建立通信联络),使开发者能够从数据库发送电子邮件。 
  只有安装带有java虚拟机(jvm)的8i或更高的版本才能使用utl_smtp。 此外还必须把plsql.jar载入数据库中。否则,当调用utl_smtp api来发送电子邮件的时候我们将得到下面的异常:ora - 29540 : class oracle/plsql.net/tcpconnection does not exist。
  默认的$oracle_home/javavm/install/initjvm.sql脚本(安装了jvm)不运行把plsql.jar载入数据库的initplsj.sql脚本。系统用户或者内部用户可以手工运行$oracle_home/rdbms/admin/initplsj.sql脚本以解决这个问题。 如果你没有可用的脚本,你要么可以从oracle支持那里得到它,要么可以简单地直接使用loadjava载入实用程序plsql.jar: 
  loadjava -user sys/password@database -resolve plsql/jlib/plsql.jar
  utl_smtp api:
  本文的代码中使用了下列utl_smtp包中的api: 
   open_connection():打开到简单邮件传送协议服务器的连接。 
   helo():执行连接之后建立与简单邮件传送协议服务器初始的收发关系功能,它能识别发送到服务器的“信使”。 
   mail():初始化与服务器的邮件交换,但是事实上不发送消息。 
   rcpt():识别消息的接受者。为了把一条消息发送到多个接受者,你必须多次调用这个过程。 
   data():指定电子邮件的内容。 
   quit():终止一个smtp会话并且断开与服务器的连接。 
  为了利用应用程序编程接口,把下面的调用按照给定的顺序放入程序中: 
   调用 open_connection 
   调用 helo 
   调用 mail 
   调用 rcpt for each recipient 
   格式化电子邮件的内容然后调用mail 
   调用 quit 
  emailutils包规范
   emailutils包包括下列api: 
   setsender/getsender-设置/取得发送者 
   setrecipient/getrecipient -设置/取得接受者 
   setccrecipient/getccrecipient -设置/取得抄件接受者 
   setmailhost/getmailhost -设置/取得邮件主机 
   setsubject/getsubject -设置/取得主题 
   send-发送邮件 
  代码1说明了emailutils包的规范:
create or replace package emailutils as
procedure setsender(psender in varchar2);
function getsender
return varchar2;
procedure setrecipient(precipient in varchar2);
function getrecipient
return varchar2;
procedure setccrecipient(pccrecipient in varchar2);
function getccrecipient
return varchar2;
procedure setmailhost(pmailhost in varchar2);
function getmailhost
return varchar2;

本新闻共2


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons