2017-03-29 3 views
0

쿼리 결과를 인쇄하려고합니다. 여기에 오라클 SQL 스크립트입니다 :oracle에서 쿼리 결과를 스풀링하는 방법

set linesize 32767; 
set pagesize 0; 
set newpage 0; 
set space 0; 
set echo off; 
set feedback off; 
set verify off; 
set heading off; 
set sqlprompt ''; 
set trimspool on; 
set headsep off; 

spool C:\asd.tmp 
SELECT PROCESSNAME FROM ACTIVEPROCESSLIST ORDER BY PROCESSID; 
spool off; 

그러나 "asd.tmp"의 내용이다 : 그것은 단지 쿼리 텍스트를 인쇄

ACTIVEPROCESSLIST 순서와 PROCESSID

BY SELECT PROCESSNAME

, 그것의 결과가 아닙니다. 쿼리 결과를 어떻게 스풀링 할 수 있습니까?

참고 : "sqldeveloper-4.0.3.16.84-x64"를 사용하고 있으며 관리자 권한으로 실행됩니다. 위에 주어진 속성을 설정하는 것도 의미가 없습니다. 나는 그 (것)들의 몇몇 조합을 시도하고 조정없이 다만 스풀 명령을 실행한다.

C++에서 실행할 수있는 다른 솔루션도 적합합니다.

+0

쿼리에서 실제로 아무것도 반환하지 않습니까? – Nitish

+0

예, 6 행을 반환합니다. – Alperen

+2

버전 4.0.3의 SQL Developer는 상당히 오래된 버전이며 SQL * Plus 명령 지원은 현재와 같이 강력하지 않았습니다. 가서 버전 4.2 버전으로 돌아가서 다시 시도하십시오. 100 % SQL * Plus 명령/스크립트 엔진 지원에 훨씬 가깝습니다. 예를 들어 v4.0은 PAGESIZE 0을 지원하지 않습니다. – thatjeffsmith

답변

0

that link에 다른 방법이 있습니다. 난 그것을 추천 해. 그것은 스풀 솔루션만큼 빨리 작동하지 않지만 적어도 내 프로젝트에서 작동합니다.

대체 방법에 문제가 있지만 this stackoverflow question의 답변이 정상적으로 작동합니다. 나는 그것을 지금 사용하고있다.

0

명령 줄/sqlplus를 사용할 수 있습니다. 스크립트를 파일로 저장 한 다음 명령 행에 저장하십시오 :

sqlplus -s [username]/[password]@[sid] @file_path > output.txt 
+0

그게 효과가있어. 그러나 스크립트 파일에는 "set echo off"가 포함되어 있지만 큰 테이블에서는 많은 시간이 걸리지 만 모든 데이터를 명령 줄에 인쇄합니다. – Alperen