2014-06-20 BaoXinjian
一、摘要
如果在Oracle EBS中開發Unix Shell,必定會涉及到在Shell中調用PLSQL,在Shell調用PLSQL一般是通過SQLPlus這個工具
關於SQLPlus需明白SQLPlus的登錄方式和常用命令,具體的在另文介紹SQLPlus的用法
1. SQLPlus的登錄方式
sqlplus [ [<option>] [<logon>] [<start>] ]
<option> 為: [-C <version>] [-L] [-M "<options>"] [-R <level>] [-S]
2. 登錄SQLPlus的基本命令
3. SQLPlus語法
語法結構與PLSQL基本一致,略過
二、案例
1. 最簡單Shell調用SQLPlus的方法
Step1. 代碼
1 #!/bin/bash 2 sqlplus -S /nolog > result.log <<EOF 3 set heading off feedback off pagesize 0 verify off echo off 4 conn apps/apps 5 insert into bxj_sqlplus_test values (sysdate, 'bxjsqlplus1.sh', null); 6 exit 7 EOF
Step2. 執行
>. ./bxjshellsql1.sh
Step3. 結果
2.1 把SQLPlus中的值傳遞給Shell方法一
Step1. 代碼
1 #!/bin/bash 2 VALUE=`sqlplus -S /nolog <<EOF 3 set heading off feedback off pagesize 0 verify off echo off numwidth 4 4 conn apps/apps 5 select count(*) from bxj_sqlplus_test; 6 exit 7 EOF` 8 if [ "$VALUE" -gt 0 ]; then 9 echo "The number of rows is $VALUE." 10 exit 0 11 else 12 echo "There is no row in the table." 13 fi
Step2. 執行
>. ./bxjshellsql2.sh
Step3. 結果
2.2 把SQL Plus中的值傳遞給Shell方法二
Step1. 代碼
1 #!/bin/bash 2 sqlplus -S /nolog > result.log <<EOF 3 set heading off feedback off pagesize 0 verify off echo off numwidth 4 4 conn apps/apps 5 col coun new_value v_coun 6 select count(*) coun from bxj_sqlplus_test; 7 exit v_coun 8 EOF 9 VALUE="$?" 10 echo "The number of rows is $VALUE."
Step2. 執行
>. ./bxjshellsql3.sh
Step3. 結果
3. 把Shell中的值傳遞給SQLPlus
Step1. 代碼
1 #!/bin/bash 2 COMMENTS="$1" 3 sqlplus -S apps/apps <<EOF 4 insert into bxj_sqlplus_test values (sysdate, 'bxjsqlplus4.sh', '$COMMENTS'); 5 exit 6 EOF
Step2. 執行
>. ./bxjshellsql4.sh
Step3. 結果
、
********************作者: 鮑新建********************
參考: 網絡資料http://www.blogjava.net/xzclog/archive/2010/04/01/317151.html