10G中SQLPLUS的PAGESIZE與HEAD的關係

Steven1981發表於2009-03-18
set pagesize 0 , set heading on ,HEAD,SQLPLUS ,ORA 10G[@more@]

前幾天資料提取,發現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 "在搞鬼.

在10G,如果在SQLPLUS設定pagesize=0,那麼自動把HEAD內容也被取消了.
=======================================================================
* from v$version ;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

pagesize 100 ;
count(*) as total from tab ;

TOTAL
----------
3525

pagesize 0
count(*) from tab ;
3525

========================================================================

也許這也算是10G的"新特性"吧.

所以,當你又不想分頁, 又想顯示HEAD,那麼你只能把PAGESIZE設大一點.

而隨帶的問題是: PAGESIZE最大隻能是50000.
那麼如果我的結果集超過50000了而且又不想分頁,那怎麼辦?

大家拍磚!

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

相關文章