您的位置:首页 > 运维架构 > Shell

[转]Shell脚本中获取SELECT结果值的方法

2015-06-22 11:47 363 查看
http://blog.itpub.net/13885898/viewspace-1670297/

有时候我们可能会需要在Shell脚本中执行SELECT语句,并将结果赋值给一个变量,对于这样的情形,我们可以用以下的方法来达到目的。

点击(此处)折叠或打开

#!/bin/ksh

#

# Created : 2015.05.25

# Updated : 2015.05.25

# Author : Jet Chenxi Zhang

# Description : Get SELECT result in Shell

# Variable Definitions #

ORACLE_SID=audtest

ORACLE_HOME=/app/oracle/product/database/11.2.0/db_1

PATH=$PATH:$ORACLE_HOME/bin

DBNAME=

# Get Database name by quering v$database #

DBNMAE=`

sqlplus -s /nolog <<EOF

set echo off feedback off heading off underline off;

conn / as sysdba;

select name from v\\$database;

exit;

EOF`

echo "Database name: "$DBNMAE

如上代码,可以将获取Database Name,执行结果如下:

[oracle@hxddcx02 ~]$ ./query_dbname.sh

Database name: AUDTEST

可以看到SELECT的结果已被正确赋值给Shell的变量。如果SELECT中有多个列的值,也可以用此方法,只是需要将结果进行分拆,如用awk:

点击(此处)折叠或打开

#!/bin/ksh

#

# Created : 2015.05.25

# Updated : 2015.05.25

# Author : Jet Chenxi Zhang

# Description : Get SELECT results in Shell

# Variable Definitions #

ORACLE_SID=audtest

ORACLE_HOME=/app/oracle/product/database/11.2.0/db_1

PATH=$PATH:$ORACLE_HOME/bin

QUERYRES=

DBID=

DBNAME=

# Get Database name by quering v$database #

QUERYRES=`

sqlplus -s /nolog <<EOF

set echo off feedback off heading off underline off;

conn / as sysdba;

select dbid, name from v\\$database;

exit;

EOF`

DBID=`echo $QUERYRES | awk -F' ' '{print $1}'`

DBNAME=`echo $QUERYRES | awk -F' ' '{print $2}'`

echo "Database ID: "$DBID

echo "Database name: "$DBNAME

运行结果如下:

[oracle@hxddcx02 ~]$ ./query_dbname2.sh

Database ID: 811711272

Database name: AUDTEST
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: