В частности, я создаю тело сообщения электронной почты и получаю странное поведение со вставкой 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
)
)
);