有没有一种方法可以在sql假脱机文件中添加换行符?
我需要以特定方式构造文件。

'\ n'似乎不起作用,并按字面显示

谢谢,

更新:我的SQL文件

-- Prepare blank file
SET NEWPAGE 0
SET SPACE 0
SET LINESIZE 250
SET PAGESIZE 0
SET ECHO OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET HEADING OFF
SET MARKUP HTML OFF
SPOOL OFF

-- Create the Employees file
SPOOL employees.txt;
SELECT (case GENDER
when '1' then 'Mr.'
else 'Mrs.'
end ) ||' '||
LNAME ||', '||
FNAME ||' newline character '||
FUNCTION ||', '|| DEPARTMENT
from EMPLOYEES;
SPOOL OFF;

-- EXIT SQL and go back to the .bat
EXIT;

结果将是这样的:

母鹿先生
财务经理

最佳答案

您可以使用 CHR function使用其ASCII代码(不是严格的ASCII,但此处足够接近)来嵌入换行符,在这种情况下,使用CHR(10)表示\n:

SELECT (case GENDER
when '1' then 'Mr.'
else 'Mrs.'
end ) ||' '||
LNAME ||', '||
FNAME || CHR(10) ||
FUNCTION ||', '|| DEPARTMENT
from EMPLOYEES;

如果您还希望返回回车符,请附加CHR(13)(\r)。

如注释中所述,这也在行之间引入了空白行。据我所知,摆脱这种情况的唯一方法是-有点不直观-SET RECSEP OFF。新行似乎使SQL * Plus将输出视为已包装,您也可以通过SET WRAP OFF命令或COLUMN ... TRUNCATE选项看到它们,这两个命令都会抑制第二行。

如果只希望将数据假脱机到文件而不是终端,则可能还需要SET TAB OFFSET TERMOUT OFF

(从更详细地编辑问题开始)

如果只想在两个查询的结果之间留空行,可以使用SQL*Plus PROMPT command,不带任何参数:
select dummy from dual;
prompt
select dummy from dual;

从文档:

PRO[MPT] [text]
其中text表示要显示的消息的文本。

将指定的消息或空白行发送到用户的屏幕。如果
您省略文本时,PROMPT在用户屏幕上显示空白行。

如果对输出的外观有其他特定要求,也可以查看formatting SQL*Plus reports上的部分。

如果您有一个通过dbms_output调用生成输出的PL / SQL块,则可以使用 NEW_LINE 在现有输出之间添加空白行:
dbms_output.put_line('some text');
dbms_output.new_line;
dbms_output.put_line('some more text');

关于oracle - 在后台打印文件中添加换行符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19241913/

10-08 22:11
查看更多