2011-09-17 25 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のクエリはそれを返すS:

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

答えて

5

あなたが列見出しを印刷したい場合は、ON HEADING設定配置する必要があります。

ます。また、この(申し訳ありませんが、私は今testintすることはできません)のようなものSPOOLコマンドを使用してすることができます

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

はい、動作します。 –

関連する問題