利用oracle存储过程来发送邮件
2008-09-01 12:46:14 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閹冣挃闁硅櫕鎹囬垾鏃堝礃椤忎礁浜鹃柨婵嗙凹缁ㄧ粯銇勯幒瀣仾闁靛洤瀚伴獮鍥敍濮f寧鎹囬弻鐔哥瑹閸喖顬堝銈庡亝缁挸鐣烽崡鐐嶆棃鍩€椤掑嫮宓佸┑鐘插绾句粙鏌涚仦鎹愬闁逞屽墰閹虫捇锝炲┑瀣╅柍杞拌兌閻ゅ懐绱撴担鍓插剱妞ゆ垶鐟╁畷銉р偓锝庡枟閻撴洘銇勯幇闈涗簼缂佽埖姘ㄧ槐鎾诲礃閳哄倻顦板┑顔硷工椤嘲鐣烽幒鎴旀瀻闁规惌鍘借ⅵ濠电姷鏁告慨顓㈠磻閹剧粯鈷戞い鎺嗗亾缂佸鏁婚獮鍡涙倷閸濆嫮顔愬┑鐑囩秵閸撴瑦淇婇懖鈺冪<闁归偊鍙庡▓婊堟煛鐏炵硶鍋撻幇浣告倯闁硅偐琛ラ埀顒冨皺閺佹牕鈹戦悙鏉戠仸闁圭ǹ鎽滅划鏃堟偨缁嬭锕傛煕閺囥劌鐏犻柛鎰ㄥ亾婵$偑鍊栭崝锕€顭块埀顒佺箾瀹€濠侀偗婵﹨娅g槐鎺懳熺拠鑼舵暱闂備胶枪濞寸兘寮拠宸殨濠电姵纰嶉弲鎻掝熆鐠虹尨宸ョ€规挸妫濆铏圭磼濡搫顫嶇紓浣风劍閹稿啿鐣烽幋锕€绠婚悹鍥у级瀹撳秴顪冮妶鍡樺鞍缂佸鍨剁粋宥夋倷椤掍礁寮垮┑鈽嗗灣閸樠勭妤e啯鍊垫慨妯煎亾鐎氾拷

最近将一些程序写成存储过程执行,一直都想通过Email方式通知我,每次执行的结果是否正确,在网上找了一下通过oracle发送Email,一找就找到了,调试一下便可以用了,现在记录一下,以便以后的学习使用!
目前我计划将一些统计的报表及数据库的信息等,每天能够定时的发到我的邮箱里,这样使每天的例行工作简单化,高效化,虽然是从网上"抄"来的,但会认真的研读一下代码,提高一下!
1.先创建demo_base64包,这里包括一个函数encode主要是用来解码
CREATEORREPLACEPACKAGEdemo_base64IS
--Base64-encodeapieceofbinarydata.
--
--Notethatthisencodefunctiondoesnotsplittheencodedtextinto
--multiplelineswithnomorethan76byteseachasrequiredby
--theMIMEstandard.
--
FUNCTIONencode(rINRAW)RETURNVARCHAR2;
END;
2.创建demo_base64包体
CREATEORREPLACEPACKAGEBODYdemo_base64IS
TYPEvc2_tableISTABLEOFVARCHAR2(1)INDEXBYBINARY_INTEGER;
mapvc2_table;
--InitializetheBase64mapping
PROCEDUREinit_mapIS
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;
FUNCTIONencode(rINRAW)RETURNVARCHAR2IS
ipls_integer;
xpls_integer;
ypls_integer;
vVARCHAR2(32767);
BEGIN
--Forevery3bytes,splittheminto46-bitunitsandmapthemto
--theBase64characters
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;
ENDLOOP;
--Processtheremainingbytesthathasfewerthan3bytes.
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||'=';
ENDIF;
RETURNv;
END;
BEGIN
init_map;
END;
更多精彩
赞助商链接