Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 将附件正确传递到UTL\u MAIL.SEND\u ATTACH\u RAW_Oracle_Plsql - Fatal编程技术网

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;