使用DBMS_OUTPUT删除SPOOL中的最后一个空行

时间:2015-05-20 18:24:24

标签: sql oracle plsql

在SQL Developer中使用SPOOL和PL / SQL(我不能通过命令行使用SQL Plus)我需要创建一个包含一些信息的文件。问题是,在文件的末尾,我得到2个空白行,这导致我在其他地方导入此文件时遇到麻烦。

使用下一个代码(外部调用以避免sql语句):

SET SERVEROUTPUT ON;
SET TERMOUT OFF;
SET HEAD OFF;
SET VERIFY OFF;
SET FEEDBACK OFF;

SPOOL 'C:\myfile.csv'

BEGIN
  DBMS_OUTPUT.PUT_LINE('Hello');
END;
/

SPOOL OFF;

我得到了:

Hello
(blank line)
(blank line)

我可以处理0或1个空白行,但不能处理2.我尝试了SET TRIMSPOOL ON但是SQL Developer也跳过了这个命令和其他命令(TRIM,TRIMS,SQLBLANKLINES)

1 个答案:

答案 0 :(得分:0)

看起来确实无法在SQL Developer中删除额外的CRLF。我只能建议使用不添加额外CRLF的SQLPlus。如果您绝对不能使用它,请考虑使用sed去除最后一行。

任何进一步的讨论和拯救未来的读者'时间,这里是我尝试过的所有选项都没有成功:

SET SERVEROUTPUT ON TERMOUT OFF HEAD OFF FEEDBACK OFF VERIFY OFF
SET ECHO OFF NEWPAGE NONE PAGESIZE 0 RECSEP OFF --TRIMSPOOL ON
SPOOL 'myfile.txt'
--EXEC DBMS_OUTPUT.PUT_LINE('Hello')
SELECT 'Hello' FROM DUAL;
SPOOL OFF
ED myfile.txt