修改oracle sql查询输出格式

时间:2011-09-17 11:23:12

标签: oracle format sqlplus

我想更改我的oracle sql脚本的输出格式。 考虑我有一个名为:active_user.sh的脚本,其中我只写了我的查询。现在的问题是,当我打击脚本时,显示的输出没有标题,只显示了值。

脚本为:

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

这是运行脚本的命令,输出为:

[root@oracle-test scripts]# ./active_users.sh "ora/orapass123@mydb" /opt/oracle/instantclient_11_2
         1

    23.0000

但是当我在sqlplus中运行查询时,它会返回如下内容:

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

1 个答案:

答案 0 :(得分:5)

如果要打印列标题,则必须设置HEADING ON。

你也可以使用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';