你真的會在SQL Plus中設置行寬嗎?
2025-10-13 16:38 瀟湘隱者 閱讀(38) 評論(2) 收藏 舉報在使用SQL Plus命令行時,經常會要設置行寬(linesize),展示的格式才能美觀一些.但是你真的對行寬設置都理解透徹了嗎?
SET LINESIZE 320
上面320表示的是字符的個數.這個命令的核心意義在于 控制 SQLPlus 輸出的每一行的最大寬度/字符個數。因為你的屏幕或終端窗口的寬度是有限的。如果查詢結果中的一行數據(比如一個包含很多列的表)非常長,超出了這個寬度,輸出就會自動換行(折行顯示),導致下一行的數據緊跟在上一行的末尾,而不是從新的一行開始。這會使查詢結果的顯示格式變得極其混亂,難以閱讀查看。SET LINESIZE 就是為了解決這個問題而生的。
那么調整了LINESIZE值,增加寬度后,就能解決問題嗎? 有時候,你會發現即使你調大LINESIZE的值似乎沒有任何'效果', 那么為什么呢? 因為我們一般用SecureCRT或Putty等工具,其實這些工具也有一些設置限制行寬.
你可以用下面shell命令查看一行顯示多少字符,如下所示:
$ stty size
50 164
該命令會用于顯示當前終端窗口的大小,包括行數和列數,格式為rows columns。其中,列數表示每行可以顯示的字符數。
$ tput cols
164
tput 命令也可以用來獲取終端大小. tput cols用來顯示列數.
我們以SecureCRT這個工具為例子,如下所示
-
首先全局設置:Options - Global Options - Terminal - Appearance - Maximum columns 最大只能設置成1024(推薦255),設置越大越占用內存,并選上show horizontal scrollbar,然后重啟SecureCRT. 記住,全局設置生效必須重啟SecureCRT.
-
然后session設置:Options - Session Options - Terminal - Emulation - Logical Columns設置成255(推薦255,主要是因為SQL Plus里DBMS_OUTPUT.put_line最多顯示255字符限制,這里最大值只能設置成上面Maximum columns大小,并選上Retain size and font)、Scrollbackbuffer設置成6000(這樣縱向滾動屏就可以緩存更多內容,但占內存),另外,Terminal - Appearance - Window -選上Show horizontal scroll bar,然后重新連接。當然,你也者也可以在Options - Edit Default Session中設置,這樣就可以設置所有的Session.
此時再執行上面命令,你就可以看到行的寬度設置成了255了. 如下所示:
$ tput cols
255
$ stty size
31 255
再回到之前SQL Plus命令中的linesize設置,即使你將linesize設置成了720/680這樣大的值,其實受限于SecureCRT的設置,它根本沒有生效.因為linesize的值優先級沒有SecureCRT的設置的優先級高.它們的優先級為: session設置(Logical Columns) > 全局設置(Maximum columns) > linesize設置.
另外,在SecureCRT中,有些設置值,字體大小和字體類型也會影響行寬設置.此時建議你最好勾選"保留大小和字體"(Retain size and font)."保留大小和字體"(Retain size and font)選項將使SecureCRT保持字體大小不變,這樣任何額外的文本都會出現在屏幕之外,允許你滾動查看。你還可以手動調整窗口大小,而不會影響字體大小。
浙公網安備 33010602011771號