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
  • 相关文章:

    • 2022-12-23
    • 2022-12-23
    • 2021-06-11
    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    • 2021-12-01
    • 2021-12-05
    猜你喜欢
    • 2021-07-04
    • 2021-10-18
    • 2022-12-23
    • 2021-04-01
    • 2022-01-01
    相关资源
    相似解决方案