SPOOL_FILE=${LOG_DIR}/${LOG_FILE_NAME}.spool
SQLPLUS_OUTPUT=`sqlplus -s "$SFDC_WE_CORE" <<EOF
SET HEAD OFF
SET AUTOPRINT OFF
SET TERMOUT OFF
SET SERVEROUTPUT ON
SPOOL ${SPOOL_FILE}
WHENEVER SQLERROR EXIT SQL.SQLCODE
DECLARE
BEGIN
foooo
--rollback;
END;
/
EOF`
RC=$?
if [[ $RC != 0 ]] ; then
echo " RDBMS exit code : $RC " | tee -a ${LOG_FILE}
cat ${SPOOL_FILE} | tee -a ${LOG_FILE}
cat ${LOG_FILE} | mail -s "Script ${INIT_EXE} failed on $SFDC_ENV" $SUPPORT_LIST
exit 3
fi
6条答案
按热度按时间rwqw0loc1#
举例来说:
字符串
gk7wooem2#
从安全Angular 来说,类似这样的东西不是更好吗?:
字符串
iklwldmw3#
如果您想将输出重定向到日志文件以查找错误或其他内容。你可以这样做。
字符串
vzgqcmou4#
这应处理以下问题:
1.当SQLERERROR退出时SQL.SQLCODE
1.$RC返回oracle的退出代码
1.$SPOOL_FILE中的cat解释了错误
字符串
2j4z5cfb5#
这里的一些其他答案启发我编写了一个脚本,用于使用SQLPLUS沿着shell命令为项目自动化SQL任务的混合顺序执行,这个过程以前是手动完成的。也许这个(高度净化的)例子对其他人有用:
字符串
runsql
允许您将凭证字符串作为第一个参数传递,并将所需的任何SQL作为第二个参数传递。包含凭证的变量是为了进行说明,但为了安全起见,我实际上从另一个文件中获取它们。如果您想处理多个数据库连接,您可以很容易地修改该函数以接受主机字符串作为附加参数。piah890a6#
echo“exit”|echo“SELECT table_name FROM all_tables FETCH FIRST 10 ROWS ONLY;”|sqlplus admin/password > outputFile.log