如何在没有分页符的情况下将单独的查询假脱机到同一个文件?

How to spool separate queries to same file without a page break?

我正在尝试使用 SQL*Plus 在一个脚本中 运行 多个单独的查询,并将输出假脱机到一个文件中。它目前正在假脱机,但它在所有查询之间插入一个分页符,我只希望在特定查询之间有一个分页符。

我在做什么:

SPOOL directory/QUERY_OUTPUT_FILE

SELECT .... FROM QUERY1
/
-- No page break desired here, but getting one anyway

SELECT .... FROM QUERY2
/
-- Page break desired here

SELECT .... FROM QUERY3
/

SPOOL OFF

如何控制是否在这些查询之间插入分页符?

可能您当前在脚本或本地或全局登录脚本中将 newpage 设置为零。

Sets the number of blank lines to be printed from the top of each page to the top title. A value of zero places a formfeed at the beginning of each page (including the first page) and clears the screen on most terminals. If you set NEWPAGE to NONE, SQL*Plus does not print a blank line or formfeed between the report pages.

您可以使用该设置来控制何时看到分页符;将其设置为非零值以在前两个之间留出空行,然后将其切换回零以返回换行符

例如:

SET pages 1000
SET feedback OFF

SPOOL spool_test

SET newpage NONE

SELECT * FROM DUAL
connect by level < 5
/

SET newpage 3

SELECT * FROM DUAL
connect by level < 5
/

SET newpage 0

SELECT * FROM DUAL
connect by level < 5
/

SPOOL OFF

创建的 spool_test.lst 文件如下所示:

D
-
X
X
X
X



D
-
X
X
X
X
^LD
-
X
X
X
X

由于初始 NONE 设置,在查询输出开始之前文件的开头没有任何内容。在前两个查询输出之间有三个空行,从第二次调用到 set newpage。在第二个和第三个之间只有一个 ^L,这是一个分页符(和换页)字符 - ASCII 12.