有没有办法在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;
结果如下:
先生。 Doe,John 财务经理
答案 0 :(得分:9)
您可以使用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 OFF
和SET 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');