1、最簡單的shell裏調用sqlplus. sql
$ vi test1.sh #!/bin/bash sqlplus -S /nolog > result.log <<EOF set heading off feedback off pagesize 0 verify off echo off conn scotter/tigger select sysdate from dual; exit EOF $ chmod +x test1.sh $ ./test1.sh
2、把sqlplus執行結果傳遞給shell方法一
注意sqlplus段使用老闆鍵`了, 賦變量的等號兩側不能有空格. shell
$ vi test2.sh #!/bin/bash #不須要> result.log或者>/dev/null VALUE=`sqlplus -S /nolog <<EOF set heading off feedback off pagesize 0 verify off echo off numwidth 4 conn scotter/tigger select count(*) from tab; exit EOF` if [ "$VALUE" -gt 0 ]; then echo "The number of rows is $VALUE." exit 0 else echo "There is no row in the table." fi $ chmod +x test2.sh $ ./test2.sh
3、把sqlplus執行結果傳遞給shell方法二
注意sqlplus段使用 col .. new_value .. 定義了變量並帶參數exit, 而後自動賦給了shell的$?,這種狀況使用比較狹窄,是對返回數字的狀況專用,若是返回字符串,不是數字,退出碼的方法就無能爲力了。 而方法一是無論什麼狀況通吃的。
安全
$ vi test3.sh #!/bin/bash #用退出碼返回值,須要重定向‘> result.log’,不然會顯示到屏幕上。 sqlplus -S /nolog > result.log <<EOF set heading off feedback off pagesize 0 verify off echo off numwidth 4 conn scotter/tigger col coun new_value v_coun select count(*) coun from tab; exit v_coun EOF VALUE="$?" echo "The number of rows is $VALUE." $ chmod +x test3.sh $ ./test3.sh
4、把shell程序參數傳遞給sqlplus
$1表示第一個參數, sqlplus裏能夠直接使用, 賦變量的等號兩側不能有空格不能有空格. bash
$ vi test4.sh #!/bin/bash NAME="$1" sqlplus -S scotter/tigger <<EOF select * from tab where tname = upper('$NAME'); exit EOF $ chmod +x test4.sh $ ./test4.sh ttt
5、爲了安全要求每次執行shell都手工輸入密碼 code
$ vi test5.sh #!/bin/bash echo -n "Enter password for u_test:" read PASSWD sqlplus -S /nolog <<EOF conn scotter/$PASSWD select * from tab; exit EOF $ chmod +x test5.sh $ ./test5.sh
6、爲了安全從文件讀取密碼
對密碼文件設置權限, 只有用戶本身才能讀寫. 字符串
$ vi test6.sh #!/bin/bash PASSWD=`cat u_test.txt` sqlplus -S /nolog <<EOF conn scotrer/$PASSWD select * from tab; exit EOF $ chmod +x test6.sh $ ./test6.sh
七 、sqlplus的結果存儲在文件中 it
#!/bin/sh sqlplus -S "scotter/tigger"<<EOF set heading off set feedback off set pagesize 0 set verify off set echo off spool spool_file SELECT * from teacher; spool off exit; EOF
與下列代碼效果是相同的: table
#!/bin/sh sqlplus -S "scotter/tigger"<<EOF > spool_file set heading off set feedback off set pagesize 0 set verify off set echo off SELECT * from teacher; exit; EOF