2011-09-17 169 views
2

我想改變我的oracle sql腳本的輸出格式。 考慮我有一個名爲active_user.sh的腳本,它裏面我只寫我的查詢。現在的問題是,當我打擊腳本輸出顯示沒有標題,只顯示值。修改oracle sql查詢輸出格式

的腳本是:

export CONNECT_STRING=$1 
if [ x$2 == x ] 
then echo First Parameter is connection string to DB and Second parameter have to be ORACLE_HOME variable && exit 1 
else export ORACLE_HOME=$2 
fi 
export ORACLE_SID=OMEGA #fake 
export PATH=$ORACLE_HOME/bin:$PATH 
RAND=$$ 
sqlplus -s /nolog <<-EOF > /tmp/${RAND}.sql_out.temp 

connect $CONNECT_STRING 
set HEADING OFF 
set PAGESIZE 0 
set linesize 120 
col metric_name format a40 
col value format 999999990.9999 
select count(*) from v\$session where username is not null and status='ACTIVE'; 
EOF 

cat /tmp/${RAND}.sql_out.temp 

這是運行腳本的命令,輸出是:

[[email protected] scripts]# ./active_users.sh "ora/[email protected]" /opt/oracle/instantclient_11_2 
     1 

    23.0000 

但是當我運行在sqlplus中的查詢返回類似thi的東西S:

COUNT(*) 
---------- 
1 

回答

5

如果你要打印的列標題,你必須把設置HEADING ON。

您也可以使用SPOOL命令,這樣的事情(抱歉,我現在不能testint):

spool /tmp/${RAND}.sql_out.temp 
set heading on 
set pagesize 1000 
set tab on 
set linesize 120 wrap off 
column "yourcount" format a40 
col metric_name format a40 
col value format 999999990.9999 
select count(*) yourcount from v\$session where username is not null and status='ACTIVE'; 
+0

這沒有什麼區別:( –

+0

我改變了我的回答一點我常上使用卷軸。/off來控制輸出 – Aitor

+0

是的,它可以工作,謝謝哥們 –