有时候我们可能会需要在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
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30936525/viewspace-2018423/
,如需转载,请注明出处,否则将追究法律责任。