利用oracle存储过程来发送邮件

最近将一些程序写成存储过程执行,一直都想通过Email方式通知我,每次执行的结果是否正确,在网 上找了一下通过oracle发送Email,一找就找到了,调试一下便可以用了,现在记录一下,以便以后的学 习使用!

目前我计划将一些统计的报表及数据库的信息等,每天能够定时的发到我的邮箱里,这样使每天的例 行工作简单化,高效化,虽然是从网上"抄"来的,但会认真的研读一下代码,提高一下!

1.先创建demo_base64包,这里包括一个函数encode主要是用来解码

CREATE OR REPLACE PACKAGE demo_base64 IS
-- Base64-encode a piece of binary data.
--
-- Note that this encode function does not split the encoded text into
-- multiple lines with no more than 76 bytes each as required by
-- the MIME standard.
- -
FUNCTION encode(r IN RAW) RETURN VARCHAR2;
END;

2.创建demo_base64包体

CREATE OR REPLACE PACKAGE BODY demo_base64 IS
TYPE vc2_table IS TABLE OF VARCHAR2(1) INDEX BY BINARY_INTEGER;
map vc2_table;
-- Initialize the Base64 mapping
PROCEDURE init_map IS
BEGIN
map(0) :='A'; map(1) :='B'; map(2) :='C'; map (3) :='D'; map(4) :='E';
map(5) :='F'; map(6) :='G'; map(7) :='H'; map(8) :='I'; map (9):='J';
map(10):='K'; map(11):='L'; map(12):='M'; map(13):='N'; map(14):='O';
map (15):='P'; map(16):='Q'; map(17):='R'; map(18):='S'; map(19):='T';
map(20):='U'; map (21):='V'; map(22):='W'; map(23):='X'; map(24):='Y';
map(25):='Z'; map(26):='a'; map (27):='b'; map(28):='c'; map(29):='d';
map(30):='e'; map(31):='f'; map(32):='g'; map (33):='h'; map(34):='i';
map(35):='j'; map(36):='k'; map(37):='l'; map(38):='m'; map (39):='n';
map(40):='o'; map(41):='p'; map(42):='q'; map(43):='r'; map(44):='s';
map (45):='t'; map(46):='u'; map(47):='v'; map(48):='w'; map(49):='x';
map(50):='y'; map (51):='z'; map(52):='0'; map(53):='1'; map(54):='2';
map(55):='3'; map(56):='4'; map (57):='5'; map(58):='6'; map(59):='7';
map(60):='8'; map(61):='9'; map(62):='+'; map (63):='/';
END;
FUNCTION encode(r IN RAW) RETURN VARCHAR2 IS
i pls_integer;
x pls_integer;
y pls_integer;
v VARCHAR2(32767);
BEGIN
-- For every 3 bytes, split them into 4 6-bit units and map them to
-- the Base64 characters
i := 1;
WHILE ( i + 2 <= utl_raw.length(r) ) LOOP
x := to_number(utl_raw.substr(r, i, 1), '0X') * 65536 +
to_number(utl_raw.substr(r, i + 1, 1), '0X') * 256 +
to_number(utl_raw.substr(r, i + 2, 1), '0X');
y := floor(x / 262144); v := v || map(y); x := x - y * 262144;
y := floor(x / 4096); v := v || map(y); x := x - y * 4096;
y := floor(x / 64); v := v || map (y); x := x - y * 64;
v := v || map(x);
i := i + 3;
END LOOP;
-- Process the remaining bytes that has fewer than 3 bytes.
IF ( utl_raw.length(r) - i = 0) THEN
x := to_number(utl_raw.substr(r, i, 1), '0X');
y := floor(x / 4); v := v || map(y); x := x - y * 4;
x := x * 16; v := v || map(x);
v := v || '==';
ELSIF ( utl_raw.length(r) - i = 1) THEN
x := to_number(utl_raw.substr(r, i, 1), '0X') * 256 +
to_number (utl_raw.substr(r, i + 1, 1), '0X');
y := floor(x / 1024); v := v || map(y); x := x - y * 1024;
y := floor(x / 16); v := v || map(y); x := x - y * 16;
x := x * 4; v := v || map(x);
v := v || '=';
END IF;
RETURN v;
END;
BEGIN
init_map;
END;

时间: 2024-10-29 14:54:14

利用oracle存储过程来发送邮件的相关文章

利用Oracle数据库发送邮件的实例代码_oracle

--发送邮件的主过程如下所述: Procedure send_mail_ (p_From Varchar2, --邮件发送人 p_Fromuser Varchar2, --发件人昵称 p_Touser Varchar2, --接受人昵称 p_To Varchar2, --邮件接收人 p_Cc Varchar2, --邮件抄送人 p_Subject Varchar2, --邮件标题 p_Message Varchar2, --邮件内容 p_User Varchar2, --邮件验证用户 p_Mai

利用游标返回结果集的的例子(Oracle 存储过程)

oracle|存储过程|游标 在sqlplus中建立如下的内容:1.程序包 SQL> create or replace package types  2  as  3      type cursorType is ref cursor;  4  end;  5  / 程序包已创建. 2.函数SQL> create or replace function sp_ListEmp return types.cursortype  2  as  3      l_cursor    types.c

Spring 调用ORACLE存储过程的结果集

oracle|存储过程 oracle 对于高级特性总是与众不同(我极力讨厌这一点,如果使用它的产品就要对这种产品进行特定的编程,这也是我从不看好weblogic之类的平台的原因),大对象存取一要定用它自己的LOB对象,所幸我还能通过LONG RAW来代替.以便能使程序不需要特定的编码.但对于存储过程(我是说返回结果集的存储过程),我还没有什么方法能用一个通用的程序来处理ORACLE.太多的教材或文章在讲存储过程的调用只是不负责任地简单执行一些涵数或无结果返回的存储过程,使大多数读者根本不知道到底

ASP调用Oracle存储过程

oracle|存储过程 夏毅 一.ASP动态网站开发技术 随着人们对因特网认识的加深和IT技术的发展,一成不变的静态网页已经越来越满足不了信息交互和电子商务的需求,因此以数据库为核心开发能够实现信息交互和个性化服务的网页已经成为一种潮流.为了迎合动态交互式网页的开发趋势,出现了可以与后台数据库进行互动的Web开发技术,目前比较流行的一类是建立在微软Windows平台IIS基础上的ASP(Active Server Pages)技术.它是将VBscript.JavaScript等特定的脚本语言利用

在ASP中利用Oracle Object for OLE访问Oracle 8

object|oracle|访问 ASP(Active Server Pages)是微软公司为开发互联网络应用程序所提出的工具之一,它是一种类似HTML(Hypertext Markup Language超文本标记语言).Script与CGI(Common Gateway Interface通用网关接口)的结合体,但是其运行效率却比CGI更高.程序编制也比HTML更方便且更有灵活性,程序安全性及保密性远比Script好.因此ASP是目前网页开发技术中最容易学习.灵活性最大的开发工具. ASP内置

ASP.NET调用oracle存储过程实现快速分页

asp.net|oracle|存储过程|分页 包定义:  create or replace package MaterialManage is  TYPE T_CURSOR IS REF CURSOR;  Procedure Per_QuickPage  (  TbName         in   varchar2,     --表名  FieldStr       in   varchar2,     --字段集  RowFilter      in   varchar2,     --过

Oracle存储过程的常见问题

1.在Oracle中,数据表别名不能加as. 如: select a.appname from appinfo a;-- 正确 select a.appname from appinfo as a;-- 错误 也许,是怕和Oracle中的存储过程中的关键字as冲突的问题吧 2.在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了. select af.keynode into kn from APPFOUNDATION af where

oracle 存储过程 存放 blob

问题描述 oracle 存储过程 存放 blob 现有一需求,利用存储过程将接收到的网络二进制数据(存储在char[]中),希望将二进制数据存放在oracle的blob字段,为了提高效率,希望用存储过程实现.求大侠帮助.希望能给出存储过程的写法和调用存储过程传参的方法,最好vc实现 谢谢 解决方案 追加问题 我是用的otl

用PHP执行Oracle存储过程示例

oracle|存储过程|示例|执行 <?//在oracle中执行存储过程示例//供大家参考$gConn=ocilogon("test","test"); /* OCIDefineByPos example thies@digicol.de (980219) *///discrate与nEcode是out parameter,其余均是 in parameter.//存储过程get_discrate存放于package ebiz_pg中.$stmt = OCIPa