linux 如何在shell脚本中获取oracle过程的参数值

gg0vcinb  于 12个月前  发布在  Linux
关注(0)|答案(1)|浏览(147)

我想从过程中获取输出值并显示它或存储在shell脚本中的变量中。
我已经尝试了下面的代码,并得到了输出,但我们只能打印数字使用此方法,也只能打印一个输出过程。

#!/bin/bash

sqlplus -s HOME/testhome#@SIR22457 << EOF

set serveroutput on;
variable out_shell number;
begin sam('$1',:out_shell); 
end;
/

exit :out_shell
EOF

echo "Value out_shell: $?"

字符串
但是我想要字符串以及如何处理多个输出参数。
下面是带有一个out参数的示例过程。我也希望有多个out参数

create or replace procedure sam (var1 in varchar2, var2 out number)
as
begin
dbms_output.put_line('var1 is: '||var1); 
var2 := var1; 
end;
/

5kgi1eie

5kgi1eie1#

是这个:

create or replace procedure giveMeFive(var1 in varchar2)
as
begin
   dbms_output.put_line('Hi '||var1); 
end;
/

var="five"
ret=$( sqlplus -s HOME/testhome#@SIR22457 <<END_SQL
    SET FEEDBACK OFF ECHO OFF SERVEROUTPUT ON SIZE 100000
    BEGIN giveMeFive('$var'); END;
END_SQL
)

echo "$ret"

Hi five

字符串
我不认为你可以检索多个OUT值,你必须把结果放到一个文本字符串中--当然,你可以解析它。
例如:

create or replace procedure giveMeFive(var1 in varchar2)
as
begin
   dbms_output.put_line('var1='||var1||' ; var2="foo"'); 
end;
/

ret=$( sqlplus -s HOME/testhome#@SIR22457 <<END_SQL
    SET FEEDBACK OFF ECHO OFF SERVEROUTPUT ON SIZE 100000
    BEGIN giveMeFive('$var'); END;
END_SQL
)
ret


但这很容易出错。

相关问题