Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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
连接中的问题-使用html和SYS_REFCURSOR的Oracle电子邮件_Html_Oracle_Plsql_Concatenation_Clob - Fatal编程技术网

连接中的问题-使用html和SYS_REFCURSOR的Oracle电子邮件

连接中的问题-使用html和SYS_REFCURSOR的Oracle电子邮件,html,oracle,plsql,concatenation,clob,Html,Oracle,Plsql,Concatenation,Clob,我是oracle的新手,尝试使用UTL_mail.send发送邮件。我在两者之间使用HTML创建表和所有。使用CLOB变量存储HTML,使用SYS_REFCURSOR存储查询结果。在查询内部,尝试使用循环从SYS_REFCURSOR获取数据。所有的结构都很好,但HTML表中的值(即从SYS_REFCURSOR两个散列中获取的值)被附加到最后一个值。我的问题如下 DECLARE postComments SYS_REFCURSOR; v_Message CLOB; liscname DAN_DA

我是oracle的新手,尝试使用UTL_mail.send发送邮件。我在两者之间使用HTML创建表和所有。使用CLOB变量存储HTML,使用SYS_REFCURSOR存储查询结果。在查询内部,尝试使用循环从SYS_REFCURSOR获取数据。所有的结构都很好,但HTML表中的值(即从SYS_REFCURSOR两个散列中获取的值)被附加到最后一个值。我的问题如下

DECLARE postComments SYS_REFCURSOR;
v_Message CLOB;

liscname DAN_DANAPP_TRADE_LIC.OTL_LIC_NAME%TYPE;

lisctype DAN_DANAPP_TRADE_LIC.OTL_LIC_TYPE%TYPE;

authority DAN_DANAPP_TRADE_LIC.OTL_LIC_AUTH%TYPE;

lastdate DAN_DANAPP_TRADE_LIC.OTL_EXPIRY_DT%TYPE;

daysrem number;

BEGIN OPEN postComments
FOR
SELECT otl.OTL_LIC_NAME,
       otl.OTL_LIC_TYPE,
       otl.OTL_LIC_AUTH,
       to_char(to_date(otl.OTL_EXPIRY_DT,'DD/MM/YYYY')) AS expirydate,
       to_date(otl.OTL_EXPIRY_DT,'dd/mm/yyyy')-to_date(sysdate,'dd/mm/yyyy') AS daystoexpire
FROM DAN_DANAPP_TRADE_LIC otl
WHERE OTL_EFF_TO_DT IS NULL
  AND (to_date(otl.OTL_EXPIRY_DT,'dd/mm/yyyy')-to_date(sysdate,'dd/mm/yyyy'))<=45
  AND OTL_CLO_STATUS=0
ORDER BY (to_date(otl.OTL_EXPIRY_DT,'dd/mm/yyyy')-to_date(sysdate,'dd/mm/yyyy')) DESC;

v_Message := q'#<html>
<body>Dear Sir/Madam,<br><br>
The following trade license(s) will expire soon. Please followup accordingly.
<br><br>
<table border="1"  width="90%">
<tr>
<th>
Company
</th>
<th>
License Type
</th>
<th>
Licensing Authority
</th>
<th>
Expiry Date
</th>
<th>
Days Left
</th>
</tr>#';

LOOP FETCH postComments INTO liscname,
                             lisctype,
                             authority,
                             lastdate,
                             daysrem;

EXIT WHEN postComments%NOTFOUND; --  dbms_output.put_line(liscname);

dbms_lob.append(v_Message, q'#<tr><td>#'|| liscname || q'#</td> 
<td>#'|| lisctype || q'#</td>
<td>#'|| authority || q'#</td>
<td>#'|| lastdate || q'#</td>
<td>#'|| daysrem || '#</td></tr>#');

END LOOP;

CLOSE postComments;

dbms_lob.append(v_Message, q'#</table>
<br><br>
<font size="2">Sent from <font color="red">DanApps</font></font>
</body>
</html>#');

UTL_MAIL.SEND(sender=>'c@xyz.com', recipients=>'a.b@xyz.com', subject=>'Trade license expiry', message => v_Message, priority => 1, mime_type => 'text/html; charset=us-ascii'); --send out emails in HTML format.

END;
输出

正如你所说的,如果我把q'放进去,那么格式会改变如下,很抱歉,我不能提供数据


请帮我整理一下这个问题。提前感谢。

问题是您使用q'作为引号分隔符,并且没有在此行结束时完成它。因此变量最终被解释为字符串

q'#<tr><td>'|| liscname || '</td>   -- Wrong

q'#<tr><td>#'|| liscname || '</td>  -- Right

在您的例子中,因为标记中没有单引号,所以不需要q'符号

不,我真的需要使用q'因为我必须给出表格大小和字体颜色。我做了如下更改,但现在数据来了,但最后一列追加了两个哈希。dbms|u lob.appendv|u Message,q | | liscname | | | | | | | | | | | | | | | | lisctype | | | | | | | | | | | |;您在最后一个标记中缺少一个“q”。如果我放置了“q”,则所有对齐方式都会更改。。用完整的问题更新了我的问题,在问题中解释你说对齐改变是什么意思。明白了。非常感谢。它将被放入垃圾文件夹。在垃圾邮件文件夹中没有显示HTML。您可以从问题中删除图像,因为它与问题无关。这可能会误导寻求答案的人。
 <td>'|| daysrem || '</td></tr>#');