具体来说,我正在构建一个电子邮件消息体,并通过插入CRLF(定义为CRLF CONSTANT VARCHAR2(2) := CHR(13) || CHR(10);
)和格式化美元值获得一些奇怪的行为(在两个地方使用此构造具有相同的数据库字段值并获取输出TRIM(TO_CHAR(foo.mydollars, '$99,999,999,990.00'))
)中的结果不同。
在CRLF案例中,我有时会得到换行符,有时候不会。
在我看到的数字格式中:
1. $1,66942. 2. $1,669.42
我正在运行Oracle 10g。
所以我将消息体输出到假脱机日志文件,并且美元值格式在所有情况下看起来都很完美。换行不是问题,因为客户搞砸了我。仍然存在在邮件进入我的收件箱时丢弃小数的问题。
程序通过一个包装器将消息体传递给Oracle邮件包,该包装器将字符集设置为iso-8859-1,并按如下方式处理消息体:
UTL_SMTP.write_raw_data (c, UTL_ENCODE.quoted_printable_encode (UTL_RAW.cast_to_raw ( p_msgBody || UTL_TCP.crlf ) ) );
答案 0 :(得分:4)
我的猜测可能是电子邮件/邮件阅读器导致问题而不是Oracle。电子邮件客户端会对收到的电子邮件执行各种有趣的格式设置。 Outlook特别添加/删除了它认为合适的换行符。
我建议将电子邮件正文写入临时/日志记录表,以便您可以将其与电子邮件进行比较?