如何获取unix bash shell脚本中调用的PL / SQL过程的变量值

时间:2013-03-19 16:29:35

标签: unix

#!/usr/bin/env bash

sqlplus -s user@lnpfvd1.world/password<<!

   declare 

   var_truc_result VARCHAR2(255);

   begin 

   brr_truncate_generic_procedure('TABLE_NAME', var_truc_result);

   end;
/
!

我们正在调用brr_truncate_generic_procedure,它在变量var_truc_result内设置一些值(成功/失败)。

我们只想在unix shell变量中使用这个变量,这样我们就可以根据它来设置一些逻辑。

1 个答案:

答案 0 :(得分:0)

我现在无法自己测试,但这样的事情应该有效:

result=`sqlplus / <<SCRIPT| grep ^result | sed "s/^result: //"
set serveroutput on
declare
    var_truc_result VARCHAR2(255);
begin
   brr_truncate_generic_procedure('TABLE_NAME', var_truc_result);
   dbms_output.put_line( 'result: ' || var_truc_result);
end;
/
exit
SCRIPT`

echo var_truc_result is: $result

您也可以尝试

select var_truc_result as "answer"
from dual

代替dbms_output行,但你需要调整grep / sed

修改:

我在AskTom上发现了this讨论,它提供了上面的一些变体等,这可能也有帮助