oracle配置會話環境(set命令) -- 轉自網路

ningzi82發表於2010-10-19
一般在SQL>下進行SQLPLUS 操作,都需要進行必要的環境設定才能完成我們所需要的輸出。所有環境的設定由 SET命令加相應的環境變數來完成。下面是常用的環境設定:
§2.5.1 ARRAYSIZE(取回的行數)
SET ARRAY[SIZE]{integer}一次可以提取(Fetch)的行的數目,1->5000,當有較長欄位時應設小些。
§2.5.2 AUTOCOMMIT(自動提交)
SET AUTO [COMMIT] { [ OFF | ON | IMM | n] }用於在操作中是自動提交或是部分提交或是不自動提交。1) 或IMM使得在完成每條SQL語句時將未提交的改變立刻提交給資料庫系統。ON2) 允許在使用者發出COMMIT後,可以執行命令的數量(將n條SQL語句所做的改變進行提交)。N 3) 停止自動提交,使用者必須用COMMIT命令才能被提交。OFF[@more@]


§2.5.3 LINESIZE(行顯示寬度)
可以設定 LINESIZE 環境變數來控制行的顯示寬度,預設是80個字元。SET Lin[esize]{80|integer}Integer = 設定行寬度(字元個數),最大值999,如:SQL>set linesize 160
§2.5.4 LONG(長型別顯示位元組數)
在預設的SQL> 狀態下,SQL>緩衝區用於顯示LONG 的位元組數只有80個字元。如果我們需要查詢的列中含有 LONG型別的欄位的話,就需要將LONG緩衝區設定大些。SET LONG{80|integer}Integer 是 顯示或複製long值的最大寬度, n=1->32767(但必須小於Maxdata值)SQL>show Maxdata (最大行寬)SQL>set long 2000
§2.5.5 PAGESIZE(頁行數)
在預設的SQL> 狀態下,SQL>緩衝區顯示頁的行數是24行,其中22行顯示資料,2行顯示標題和橫線。我們將pagesize 設定大些以減少提示標題和橫線。SET pag[esize] {24|integer}SQL>SET pagesize 66
§2.5.6 PAUSE(暫停)
可以設定 PAUSE 為ON 或OFF來控制螢幕顯示。當設定為ON 時,在select 語句發出後需要按Enter鍵才能顯示一屏。SET PAUSE [ ON | OFF ]SQL> set pause on提示:在發出select 語句並按Enter鍵後 還要再按Enter鍵才能顯示結果.
§2.5.7 SPACE(列間空格)
可用 set space 來設定各列間的空格數,語法為:SET SPA[CE] {1|n}N為設定輸出行列間的空格數,最大為10。
SQL>set space
2建議:在一般情況下,不用設定space引數。
§2.5.8 Termout (啟/停螢幕顯示)
TERMOUT用於設定在螢幕上顯示或不顯示所輸出的資訊。SET TERMOUT { ON | OFF }set termout offset termout on set termout off 常用SPOOL XXX時,即關閉報表在螢幕上的顯示(節省時間)set termout on 常用SPOOL off之後,即恢復報表在螢幕上的顯示
§2.5.9 ECHO (啟/停命令顯示)
可以用ECHO命令來顯示或不顯示所執行的SQL命令。語法如:SET ECHO{OFF|ON}顯示執行當中的各命令( 即用start 時)set echo 受到 set termout 的影響set pagesize 100set echo onselect table_name from dict where rownum<20;select * from cat where rownum<30;set echo off --下面只顯示結果不顯示命令:select table_name from dict where rownum<20;select * from cat where rownum<30;
§2.5.10 TRANSACTION (啟動事務)
一個很重要的事務環境設定是TRANSACTION。它包括兩個部分的內容:SET TRANSACTION { READ ONLY | USE ROLLBACK SEGMENT segment_name }READ ONLY 是用於保證讀的一致性。即其他使用者的修改不影響當前查詢結果。USE ROLLBACK SEGMENT segment_name 是為當前所處理的事務指定專門的回滾段。這主要是在進行大量的Insert 或Delete 或Update時,需要一個大的回滾段以保證事務正常完成。詳細見資料庫管理員。
§2.5.11 SHOW ALL(列出所有引數)
可以用SHOW ALL 來顯示當前的所有引數情況。它的用法很簡單。比如:SQL> show allappinfo為ON並且已設定為"SQL*Plus"arraysize 15autocommit OFFautoprint OFFautorecovery OFFautotrace OFFblockterminator "." (hex 2e)btitle OFF and 為下一條 SELECT 語句的前幾個字元cmdsep OFFcolsep " "compatibility version NATIVEconcat "." (hex 2e)copycommit 0COPYTYPECHECK 為 ONdefine "&" (hex 26)describe DEPTH 1 LINENUM OFF INDENT ONmarkup HTML OFF SPOOL OFF ENTMAP ON PREFORMAT OFFecho OFFeditfile "afiedt.buf"embedded OFFescape OFFflagger OFFflush ONheading ONheadsep "|" (hex 7c)instance "local"linesize 80lno 14loboffset 1logsource ""long 80longchunksize 80newpage 1null ""numformat ""numwidth 10pagesize 14PAUSE 為OFFpno 0recsep WRAPrecsepchar " " (hex 20)release 801070000repfooter OFF and 為 NULLrepheader OFF and 為 NULLserveroutput OFFshiftinout INVISIBLEshowmode OFFspool OFFsqlblanklines OFFsqlcase MIXEDsqlcode 0sqlcontinue "> "sqlnumber ONsqlprefix "#" (hex 23)sqlprompt "SQL> "sqlterminator ";" (hex 3b)suffix "sql"tab ONtermout ONtime OFFtiming OFFtrimout ONtrimspool OFFttitle OFF and 為下一條 SELECT 語句的前幾個字元underline "-" (hex 2d)USER 為"SYS"verify ONwrap : 行將為已換行SQL>你可以從上面的引數中看到其當前值,也可以修改某些引數的值。

轉自:

10G中SQLPLUS的PAGESIZE與HEAD的關係

set pagesize 0 , set heading on ,HEAD,SQLPLUS ,ORA 10G

前幾天資料提取,發現SPOOL出來的資料是沒有HEAD的.
環境: LINUX AIX + ORA 10G ,
指令碼如下:
------------------------------------------------
#! /bin/sh
. /home/oracle/.bash_profile
sqlplus -s itrade/aaaaaa <set echo off
set linesize 10000
set long 2000
set term off verify off feedback off
set pagesize 0
spool /tmp/report.txt ;
select count(*) as aa from tab;
spool off ;
exit
EOF
exit 0
---------------------------------------------------

而我們知道sqlplus 中,HEADING 預設是ON的.

一時鬱悶之下,人肉進行了除錯.
發現是" set pagesize 0 "在搞鬼.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/789833/viewspace-1039954/,如需轉載,請註明出處,否則將追究法律責任。

相關文章