有时候我们可能会需要在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 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 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
本文永久更新链接地址:
