调用unix脚本中的PL/SQL块



我正在尝试使用sqlplus在unix脚本中调用pl/sql块。我刚试着打印一条语句,但是什么也没有打印出来,也没有得到任何错误。

Result=`sqlplus -s $TgtUsrID/$TgtPswd@$TgtServer <<eof
whenever sqlerror exit sql.sqlcode;
SET SERVEROUTPUT ON;
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello World!');
END;
eof
`
current_time=`date`
echo " Script execution   finished at $current_time"

只需要在变量(Result)前加上最后一个EOF之后的美元运算符以及echo命令,如

Result=`sqlplus -S /nolog << EOF
conn $TgtUsrID/$TgtPswd@$TgtServer
whenever sqlerror exit sql.sqlcode
set feedback off
SET SERVEROUTPUT ON;
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello World!');
END;
/
EOF`
echo $Result    
echo Script execution finished at $(date)

将产生这样的结果

Hello World!
Script execution finished at Tue Feb 14 00:15:51 +03 2021

在最后一个echo之后的描述引号是多余的,并且更倾向于使用与/nolog的连接,因为在当前情况下,只要ps -ef命令发出,模式的密码就会被泄露。

最新更新