При использовании dbms_output для помещения сгустка с возвратом каретки он вставляет дополнительный, который создает дополнительные разрывы строк, которые можно увидеть при запуске его в SQL * Plus и использовании спула для его захвата. Используемая база данных - Oracle 11g. Например, запустив это:
SET HEADING OFF
SET FEEDBACK OFF
SET ECHO OFF SET
VERIFY OFF SET
TRIMOUT ON SET
TRIMSPOOL ON
SET SERVEROUTPUT ON
SPOOL ./TestResult.txt
-- Spooling direct select for comparing results
SELECT 'line 1'||CHR(13)||CHR(10)||'line 2' FROM DUAL;
declare
l_clob clob;
begin
l_clob := 'line 1'||chr(13)||chr(10)||'line 2';
dbms_output.put_line(l_clob);
end;
/
SPOOL OFF
Производит:
line 1
line 2
line 1
line 2
С разрывами базовой линии, имеющими вид:
[CR][LF]
line 1[CR][LF]
line 2[CR][LF]
[CR][LF]
line 1[CR]
[CR][LF]
line 2[CR][LF]
[CR][LF]
В качестве дополнительного примечания приведенный выше код является упрощенным примером, иллюстрирующим мою проблему. В действительности переходы строки CRLF происходили из столбца clob, который я не могу изменить, но мне нужно обработать его перед созданием некоторых файлов журналов на стороне клиента с помощью очереди, поскольку я не могу использовать utl_file или аналогичные функции для их создания. Также это должно быть обработано внутри PL / SQL или SQL * Plus, если это возможно, поэтому я не ищу решений в плане устранения лишних CR извне с помощью текстового редактора, сценариев sh / bat или аналогичных методов.
Я пытался выяснить, почему он вставлен или как от него избавиться, но безрезультатно, поэтому любая помощь будет принята с благодарностью.