Oracle存储过程实现定时发送邮件(内容包括html
表格
关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载
在6月佛山提了需求,是要求定时给佛山考勤设备接口人发送邮件和提醒短信,邮件内容主要是以
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
格(html的形式把佛山地区的考勤设备的连接情况,及时的反应给移动接口人。在开发中碰到了一下几点我认为比较有代表性的问题跟大家分享下:1,最首先想到的问题是怎么在邮件里以表格的形式发送准确的数据。2.实现了发送邮件的功能,但是一般邮件的内容都是比较小的,而这次的需求因为邮件内容包括佛山整个地市的考勤机的信息(这是最大值,因此,不能用varchar2类型变量来存储内容,而要改用超大的clob类型。在Oracle中,LOB(LargeObject,大型对象类型的字段现在用得越来越多了。因为这种类型的字段,容量大(最多能容纳4GB的数据,且一个表中可以有多个这种类型的字段,很灵活,适用于数据量非常大的业务领域(如图象、档案等。LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(BinaryLargeObject,适用于存贮非文本的字节流数据(如程序、图象、影音等。而CLOB,即字符型大型对象(CharacterLargeObject,则与字符集相关,适于存贮文本型的数据(如历史档案、大部头著作等。在使用Clob变量的时候,你可以先定义一个varchar2类型的变量,然后调用方法第一个参数l_body_html是要操作的大型对象定位器,第二个参数kq_message是要写到大型对象中去的字节数量(varchar2类型的,第三个参数是指定将数据写入到大型对象什么位置的偏移地址,第四个参数是写入到大型对象的数据缓冲区。在定义clob的时候一定要注意:l_body_htmlCLOB:=EMPTY_CLOB;而最容易让人忘记的就是他的初始化,DBMS_LOB.createtemporary(l_body_html,FALSE,10;(没有初始化一定有报错,而且很难找,切记!。--接着写传参数的.发送邮件方法定义:CREATEORREPLACEPROCEDUREGDXXT.send_mail(p_recipientVARCHAR2,--邮件接收人p_subjectVARCHAR2,--邮件标题v_body_htmlCLOB--邮件内容在把clob参数传过来的时候,我们不能直接用这个传过来的v_body_html,而是要重新定义一个clob类型的l_body_html变量,然后把传过来的数据复制到新定义的clob变量这时候就要用到一个方法,DBMS_LOB.COPY(l_body_html,--目标lobv_body_html,--源lobDBMS_LOB.getlength(v_body_html,--拷贝的数据量DBMS_LOB.getlength(l_body_html,--1其中参数说明如下:l_body_html是被拷贝的目标lob定位器;v_body_html是被拷贝的源lob定位器;DBMS_LOB.getlength(v_body_html是指定了要拷贝的lob中的数据量;DBMS_LOB.getlength(l_body_html指定了要从源lob的什么位置开始拷贝;1指定了要将拷贝的内容放置到目标lob的什么位置;因为在l_body_html变量中我先写进了邮件的报头信息