2017-11-20 13 views
1

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 

가 어떻게 페이지 나누기가 여부 이러한 쿼리 사이에 삽입할지 여부를 제어 할 수 있습니다?

+0

여기에 표시되는 내용은 무엇일까요? https://stackoverflow.com/questions/26601251/how-to-remove-unnecessary-line-breaks-in-sql-plus-spooling – OldProgrammer

답변

3

아마도 스크립트 또는 로컬 또는 글로벌 로그인 스크립트에서 newpage을 0으로 설정했을 것입니다.

각 페이지의 위쪽에서 위쪽 제목까지 인쇄 할 빈 줄 수를 설정합니다. 0 값은 첫 페이지를 포함하여 각 페이지의 처음에 formfeed를 놓고 대부분의 터미널에서 화면을 지 웁니다. NEWPAGE를 NONE으로 설정하면 SQL * Plus는 보고서 페이지 사이에 빈 줄이나 양식을 인쇄하지 않습니다.

페이지 나누기가 표시 될 때이를 제어 할 수 있습니다. 처음 두 사이에 빈 줄을하기 위해 0이 아닌 값으로 설정 한 후 라인이 다시

예를 들어 나누기 얻을 0으로 다시 전환 :

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 파일과 같은 모습을 만들어 : 쿼리 출력이 시작되기 전에 아무것도 때문에 초기 NONE 설정에,이없는 파일의 시작에서

D 
- 
X 
X 
X 
X 



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

. 처음 두 쿼리 출력 사이에는 두 번째 호출에서 set newpage으로가는 세 개의 빈 줄이 있습니다. 두 번째와 세 번째 사이에 단지 ^L이며, 페이지 나누기 (및 양식 공급) 문자 인 ASCII 12입니다.