SHELL调用存储过程


1、测试用例

#!/bin/sh
#日期变量可设成传入参数
#exec_date=`date +"%Y%m%d"`

# -S 设置无提示模式, 该模式隐藏命令的 SQL*Plus 标帜, 提示和回显的显示
sqlplus -S "scott/oracle" <<! >/dev/null
declare
--声明变量
i_current_date date;
v_output varchar2(20):='OK';
v_descmg  varchar2(20):='OK';
begin
--日期赋值
i_current_date :=to_date('2014-05-18','yyyy-mm-dd');
--执行过程
    pkg_sql_proc.remove_data(i_acctdt=> i_current_date,
                                                      o_output => v_output,
                                                     o_descmg => v_descmg);
end;
/
exit;
!

2、将变量进程参数化

#!/bin/sh
#日期变量可设成传入参数或者使用如下方式
exec_date=`date +"%Y%m%d"`
#数据库用户变量也可以传入
dbuser=scott
dbpasswd=oracle
#过程名称初始化
proc_name="pkg_sql_proc.remove_data"
#sqlplus声明
sql_stmt=`sqlplus -S "$dbuser/$dbpasswd" <<!
--修改session日期格式
alter session set nls_date_format='yyyy-mm-dd';
declare
    v_output varchar2(20):='OK';
    v_descmg  varchar2(20):='OK';
begin
    --日期转换
    i_current_date :=to_date($exec_date,'yyyymmdd');
    $proc_name(i_current_date, v_output, v_descmg);
end;
/
!`

相关内容