[轉]Shell腳本中獲取SELECT結果值的方法


http://blog.itpub.net/13885898/viewspace-1670297/

有時候我們可能會需要在Shell腳本中執行SELECT語句,並將結果賦值給一個變量,對於這樣的情形,我們可以用以下的方法來達到目的。

點擊(此處)折疊或打開

  1. #!/bin/ksh
  2. #
  3. # Created : 2015.05.25
  4. # Updated : 2015.05.25
  5. # Author : Jet Chenxi Zhang
  6. # Description : Get SELECT result in Shell
  7. # Variable Definitions #
  8. ORACLE_SID=audtest
  9. ORACLE_HOME=/app/oracle/product/database/11.2.0/db_1
  10. PATH=$PATH:$ORACLE_HOME/bin
  11. DBNAME=
  12. # Get Database name by quering v$database #
  13. DBNMAE=`
  14. sqlplus -s /nolog <<EOF
  15. set echo off feedback off heading off underline off;
  16. conn / as sysdba;
  17. select name from v\\$database;
  18. exit;
  19. EOF`
  20. echo "Database name: "$DBNMAE

如上代碼,可以將獲取Database Name,執行結果如下:

  1. [oracle@hxddcx02 ~]$ ./query_dbname.sh
  2. Database name: AUDTEST

可以看到SELECT的結果已被正確賦值給Shell的變量。如果SELECT中有多個列的值,也可以用此方法,只是需要將結果進行分拆,如用awk:

點擊(此處)折疊或打開

  1. #!/bin/ksh
  2. #
  3. # Created : 2015.05.25
  4. # Updated : 2015.05.25
  5. # Author : Jet Chenxi Zhang
  6. # Description : Get SELECT results in Shell
  7. # Variable Definitions #
  8. ORACLE_SID=audtest
  9. ORACLE_HOME=/app/oracle/product/database/11.2.0/db_1
  10. PATH=$PATH:$ORACLE_HOME/bin
  11. QUERYRES=
  12. DBID=
  13. DBNAME=
  14. # Get Database name by quering v$database #
  15. QUERYRES=`
  16. sqlplus -s /nolog <<EOF
  17. set echo off feedback off heading off underline off;
  18. conn / as sysdba;
  19. select dbid, name from v\\$database;
  20. exit;
  21. EOF`
  22. DBID=`echo $QUERYRES | awk -F' ' '{print $1}'`
  23. DBNAME=`echo $QUERYRES | awk -F' ' '{print $2}'`
  24. echo "Database ID: "$DBID
  25. echo "Database name: "$DBNAME

運行結果如下:

  1. [oracle@hxddcx02 ~]$ ./query_dbname2.sh
  2. Database ID: 811711272
  3. Database name: AUDTEST


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM