当前位置:七道奇文章资讯数据防范Oracle防范
日期:2011-03-21 00:21:00  来源:本站整理

利用Oracle实现及时通信[Oracle防范]

赞助商链接



  本文“利用Oracle实现及时通信[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;

procedure SetSubject(pSubject in varchar2);
function GetSubject
return varchar2;


procedure Send(pMessage in varchar2);

procedure Send(pSender in varchar2,
pRecipient in varchar2,
pMailHost in varchar2,
pCcRecipient in varchar2 := null,
pSubject in varchar2 := null,
pMessage in varchar2 := null);

end EmailUtils;
/

  可以看出,Send历程是重载历程:包标准中包含这个历程的两个版本. 一个版本当至少三个强迫性参数要规定的时刻引用,pSender,pRecipient和pMailHost:

procedure Send(pSender in varchar2,
pRecipient in varchar2,
pMailHost in varchar2,
pCcRecipient in varchar2 := null,
pSubject in varchar2 := null,
pMessage in varchar2 := null);

  以上是“利用Oracle实现及时通信[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 在多台Debian/Ubuntu上利用Oropo处理海量图片
  • 若何利用Oracle查询并删除反复记录的SQL语句
  • 如安在视图中利用ORDER BY短语 ?
  • 如安在视图中利用ORDER BY短语
  • 利用Oracle实现及时通信
  • 利用Oracle数据发掘API办法详解-PLSQL
  • <b>开辟工具:利用Orion校准查抄I/O-开辟技术</b>
  • <b>经验之谈:利用Oracle的TDE特点加密-备份恢复</b>
  • <b>利用Oracle数据库实现Python数据长期-开辟技术</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .