从 Shell 脚本执行 PL SQL 过程

Soy*_*oyf 2 unix bash shell plsql

嗨,我正在尝试从我的 Shell 脚本执行 PL SQL 过程并获取返回值(输出值),但它不起作用。谁能建议我做错了什么?这是我所拥有的:

output="$(sqlplus -S user/pw@//ip:1521/db <<ENDOFSQL
set serveroutput on;
DECLARE
    v_return PLS_INTEGER;
BEGIN
    PKG.Procedure(v_return);
    DBMS_OUTPUT.PUT_LINE(v_return);
END;
exit;
ENDOFSQL)"

echo $output 
Run Code Online (Sandbox Code Playgroud)

Soy*_*oyf 5

经过一整天的反复试验,我终于用下面的脚本让它工作了:

#!/bin/ksh

CODE=`sqlplus -S $SCHEMA/$PW@//$IP_PORT/$DB << EOM
Set timing on
Set serveroutput on
Whenever sqlerror exit failure;
Whenever  oserror exit failure;
declare
v_return number;
begin
PKG.Procedure(v_return);
end;
/
EOM`

if [ $? != 0 ]
then
 echo  "process failed."
 exit 1
fi

exit $?
Run Code Online (Sandbox Code Playgroud)