Oracle 将附件正确传递到UTL\u MAIL.SEND\u ATTACH\u RAW
假设我有两个文件名相同的文件Oracle 将附件正确传递到UTL\u MAIL.SEND\u ATTACH\u RAW,oracle,plsql,Oracle,Plsql,假设我有两个文件名相同的文件sample.xlsx 在两个单独的目录中u1\data\out1\和u2\data\out2\ 这两个目录已经分别以EXT\u OUT1和EXT\u OUT2的形式位于DBA\u目录中 我想使用UTL\u邮件从EXT\u OUT1发送sample.xlsx。发送附件\u RAW, 如何将其正确传递给附件参数 示例匿名块(注意注释): 附件内容是作为附件参数提供的值。文件名只是一个标签。它不读取文件,因此您必须自己读取,然后将其指定为附件。运行该操作时会发生什么?第五
sample.xlsx
在两个单独的目录中u1\data\out1\
和u2\data\out2\
这两个目录已经分别以EXT\u OUT1
和EXT\u OUT2
的形式位于DBA\u目录中
我想使用UTL\u邮件从EXT\u OUT1
发送sample.xlsx
。发送附件\u RAW
,
如何将其正确传递给附件
参数
示例匿名块(注意注释):
附件内容是作为附件参数提供的值。文件名只是一个标签。它不读取文件,因此您必须自己读取,然后将其指定为附件。运行该操作时会发生什么?第五个参数应该是原始值,而不是字符串;第六个是电子邮件中附件的名称。它不会查看任何目录。你好@AlexPoole,是的,对此表示歉意,我编辑了问题,请告诉我如何将l_attachment
传递到attachment
参数。使用此过程,您只能附加一个文档。另外请注意,RAW的大小限制为32k。这足以满足您的需要吗?您好@wernfrieddomsheit,是的,我只附加一个xlsx
文件。可能在4MB左右。32k是指32KB吗?在这种情况下,您必须使用低级包。使用这篇文章来获得一个起点:为了连接BLOB Hi@gary myers,这是我不确定的部分。如何将实际的RAW
文件传递到附件
参数?我看到一些帖子说,utl_file.fopen
会起作用,但我不太确定如何继续。非常感谢。
DECLARE
vInHandle utl_file.file_type;
l_sender varchar2(100) := 'SO@SO.com';
l_recipients varchar2(100) := 'migs.isip.23@gmail.com';
l_subject varchar2(100) := 'Employee Roster Report';
l_message varchar2(100) := 'Hello';
l_attachment raw;
l_directory varchar2(100) := 'EXT_OUT1';
fname varchar2(100) := 'sample.xlsx';
BEGIN
/* how put RAW data into l_attachment here? */
--vInHandle := utl_file.fopen(l_directory, fname, 'R'); -- If i'm not mistaken, this reads the File from the specified directory
--utl_file.get_raw(); -- not sure what parameters i should pass
--utl_file.fclose(vInHandle); -- ?
UTL_MAIL.SEND_ATTACH_RAW
(
sender => l_sender
, recipients => l_recipients
, subject => l_subject
, message => l_message
, attachment => l_attachment
, att_filename => 'clouds.jpg'
);
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'The following error has occured: ' || sqlerrm);
END;