【发布时间】:2017-03-15 11:17:12
【问题描述】:
我有一个 .bat 文件,它运行两个 SQL 文件并移动文件。我需要在这个 .bat 文件中进行一些错误处理。我希望它获取 sql 中生成的错误并将其传递给 AutoSys 我得到了这个代码:
#!/bin/sh
. $HOME/.bash_profile
sqlplus -s $AUTOSYS_DB_USER/$AUTOSYS_DB_PASSWD <<!
WHENEVER OSERROR EXIT 999;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
alter session set nls_date_format='DD/MM/YYYY';
execute P_LOST_APPROVALS;
!
exit_code=$?
if [ $exit_code != 0 ]; then
echo "Error calling sqlplus, return code = " $exit_code
exit $exit_code
fi
exit 0
但是,我需要它在 .bat 文件而不是 Linux 中运行?
我目前有:
echo exit | sqlplus -s %CONNECT% @Code.sql
IF %ERRORLEVEL% NEQ 0 (
echo Unsuccessful
goto @ERROR_HANDLING_SQL
)
完整的 .bat 文件:
@echo off
call config.bat
SET CONNECT=%var1%/%var2%@avpr.world
Pushd Location
Set SCRIPTPATH=Location
Set RESULTPATH=Location
echo exit | sqlplus -s %CONNECT% @Code.sql
IF %ERRORLEVEL% NEQ 0 (
echo Unsuccessful
goto @ERROR_HANDLING_SQL
)
echo exit | sqlplus -s %CONNECT% @createTXT.sql > File%date:~0,2%%date:~3,2%%date:~6,4%.txt
IF %ERRORLEVEL% NEQ 0 (
echo Unsuccessful
goto @ERROR_HANDLING_SQL
)
move "File%date:~0,2%%date:~3,2%%date:~6,4%.txt" %RESULTPATH%
echo exit | sqlplus -s %CONNECT% @dropTable.sql
IF %ERRORLEVEL% NEQ 0 (
echo Unsuccessful
goto @ERROR_HANDLING_SQL
)
: ERROR_HANDLING_SQL
<echo -1>
pause
Exit
【问题讨论】:
-
I have a .bat file我在您的问题中没有看到任何批处理代码 -
请更改您的问题标题和描述并删除批处理文件标签。这与 Windows 批处理文件无关。
-
提供完整的bat文件
-
去掉
goto @Label命令行中的@前缀,然后写:Label这样的标签(:和标签名称之间没有空格)... -
@E_McAndrew 我已经编辑了我的答案。我还看到您在帖子中添加了一个批处理脚本。如果您“当前拥有”的内容来自我的解决方案,请报告。目前看来我没有回答你的问题,只是复制了你的代码。
标签: batch-file error-handling sqlplus