以下に示すsqlステートメントをスプールsqlスクリプトで使用しています。このスクリプトをsqlplusから実行しています。しかし、ターミナルクエリの出力はまだ来ており、コマンドプロンプトでsqlplusを使用しています。しかし、試しに直接sqlplus.exeを起動してこのスクリプトを使用すると、ターミナルでクエリ出力が得られません。
コマンドプロンプトからsqlplusを起動したときに端末の出力を停止する方法を誰かが手伝ってくれませんか?
SET ECHO OFF
SET TERMOUT OFF
SET FEEDBACK OFF
SET PAGESIZE 0
SET LINESIZE 83
SET TRIMSPOOL ON
SET WRAP ON
SET RECSEP OFF
SPOOL '&1'
SELECT
DATA_OUT_DATA
FROM
STAGE.DATA_TABLE
ORDER BY
DATA_UNIQ_ID,DATA_INV_ID, DATA_SEQ_NO;
SPOOL OFF
SET PAGESIZE 24
SET LINESIZE 80
SET FEEDBACK ON
SET TERMOUT ON
12.41.61 SET TERM [OUT] {ON | OFF}
@、@@、またはSTARTで実行されるスクリプト内のコマンドによって生成された出力の表示を制御します。OFFは、出力をスプールできるように表示を抑制します。画面に出力を表示せずにファイルに。 ONは画面に出力を表示します。 TERMOUT OFFは、対話形式で入力したコマンドからの出力、またはオペレーティングシステムからSQL * Plusにリダイレクトしたコマンドには影響しません。
上記のコマンドをスクリプトに入れ、そのスクリプトを呼び出します。
script.sql:
SET ECHO OFF
SET TERMOUT OFF
SET FEEDBACK OFF
SET PAGESIZE 0
SET LINESIZE 83
SET TRIMSPOOL ON
SET WRAP ON
SET RECSEP OFF
SPOOL '&1'
SELECT
DATA_OUT_DATA
FROM
STAGE.DATA_TABLE
ORDER BY
DATA_UNIQ_ID,DATA_INV_ID, DATA_SEQ_NO;
SPOOL OFF
SET PAGESIZE 24
SET LINESIZE 80
SET FEEDBACK ON
SET TERMOUT ON
次に:
SQL> @script.sql
スプールとクエリスクリプトをSQLエンジンに配置するには、3つの方法があります。
1、SqlplusWindow
SQL> SPOOL * select query * SPOOL OFF
2、SqlplusWindow
SQL> @spoolquery.sql
3、シェルターミナルまたはジョブ
sqlplus -s "/as sysdba" << EOF_INCLUDE_SCRIPT>/dev/null 2>&1
YourSpool&QueryScriptHere
EOF_INCLUDE_SCRIPT
ここMethod3では-s
はクエリスクリプトを非表示にし、>/dev/null 2>&1
はクエリ結果の出力を非表示にします。