演示: 在bash中执行一个存储过程和一个普通的SQL语句
0. 前提条件:
数据库:Oracle10g
表:oracle自带的emp表,默认有数据如下:
1. 在bash中执行oracle存储过程
首先,在oracle中建立一个存储过程Proc_SelEName
CREATE OR REPLACE Procedure Proc_SelEName
(inempno number,outname out varchar2
)
as
beginselect ename into outname from emp where empno=inempno;
end;
接着,建立bash脚本:mysh.sh
#!/bin/bashsql_str=`
sqlplus -S scott/scott@ORCLtxk <<EOF--set linesize 800;--set long 2048576;--set serveroutput on;var oi_return varchar2(20);call Proc_SelEName($1,:oi_return);select :oi_return from dual;
exit
EOF`echo "$sql_str"
最后,执行脚本,检测结果:
[zcm@bash #23]$./mysh.sh 7369Call completed.:OI_RETURN
--------------------------------------------------------------------------------
SMITH
[zcm@bash #24]$
2. 在bash中执行普通的SQL查询语句
只需要修改下上面的bash脚本就可以了,修改如下:
#!/bin/bashsql_str=`
sqlplus -S scott/scott@ORCLtxk <<EOFselect empno,ename from emp t where rownum<3;
exit
EOF`echo "$sql_str"
最后运行bash脚本:
[zcm@bash #24]$./mysh.shEMPNO ENAME
---------- ----------7369 SMITH7499 ALLEN
[zcm@bash #25]$
结论:在bash中执行oracle存储过程及sql语句非常方便,返回的结果就像是在终端下执行的结果--普通的文本。再对返回的结果进行适当的处理就可以得到比较实用的数据了!