Oracle

當我在命令提示符下使用 sqlplus 時,設置 TERMOUT OFF 不起作用?

  • July 11, 2018

我在我的假離線 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 設置期限

$$ OUT $${開 | 離開}

控制由**@、@@ 或 START 執行的腳本中的命令生成的輸出的顯示。**OFF 禁止顯示,以便您可以將輸出假離線到文件而不在螢幕上顯示輸出。ON 在螢幕上顯示輸出。TERMOUT OFF 不會影響您以互動方式輸入或從作業系統重定向到 SQL*Plus 的命令的輸出。

將上述命令放入腳本中,然後呼叫該腳本。

腳本.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

將 spool 和查詢腳本放入 sql 引擎有以下三種方法:

1、Sqlplus視窗

SQL> SPOOL * select query * SPOOL OFF

2、Sqlplus視窗

SQL> @spoolquery.sql

3、Shell終端或JOB

sqlplus -s "/as sysdba" << EOF_INCLUDE_SCRIPT>/dev/null 2>&1

YourSpool&QueryScriptHere

EOF_INCLUDE_SCRIPT

在 Method3 中,-s隱藏查詢腳本並>/dev/null 2>&1隱藏查詢結果輸出。

引用自:https://dba.stackexchange.com/questions/197677