从shell脚本调用PL / SQL存储过程并捕获out out参数

时间:2010-12-27 04:32:08

标签: shell plsql

问题:

我有一个PL / SQL存储过程callServlet(varchar2中的wire_type,out_flag out varchar2)。在这个存储过程中我必须 叫一个servlet。 最初我需要有一个shell脚本,它通过传入shell中的参数来执行这个callServlet存储过程。 我需要从存储过程中捕获out_flag9Out参数)值,我必须评估存储的out_flag值 确定out_flagg的值是成功还是not_success。

请您告诉我以下事项

  1. 如何通过传入in和out参数从shell脚本调用存储过程(callServlet)?
  2. 如何设置callServlet存储过程发送的out参数?
  3. 如何评估callServlet的out参数以了解状态是否成功?
  4. 提前致谢!!

1 个答案:

答案 0 :(得分:1)

首先创建一个名为 callServlet.sql 的SQL * plus脚本:

var l_flag varchar2(100)

begin
  callServlet('&1', :l_flag);
end;
/

print l_flag

然后使用反引号从shell脚本调用SQL * plus和SQL脚本:

flag=`sqlplus user/secret@database @callServlet.sql "xy"`

out参数将分配给shell变量 flag “xy”是参数wire_type的值。