在 unix 脚本中调用 PL/SQL 块
Call PL/SQL block in unix script
我正在尝试使用 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"
只需要在最后一个 EOF
之后用美元运算符添加变量 (Result
)
连同 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
就会公开模式的密码当前案例发出的命令。
我正在尝试使用 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"
只需要在最后一个 EOF
之后用美元运算符添加变量 (Result
)
连同 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
就会公开模式的密码当前案例发出的命令。