首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用errorlevel查找错误的问题

使用errorlevel查找错误的问题
EN

Stack Overflow用户
提问于 2014-06-26 16:08:55
回答 2查看 149关注 0票数 0

我在一些批处理作业中遇到了一些错误。我现在每天运行50个批处理作业,有一个日志文件,它告诉我批处理作业是否成功完成。上周我注意到了一些错误,现在,我没有任何控件来显示或只是告诉我批处理作业是否失败并出现错误。我的批处理作业正在通过sqlplus启动一个脚本。我试过使用errorlevel,但id不起作用。

到目前为止,我的批处理作业看起来是这样的。我已经包含了我试图使用的错误级别代码。

代码语言:javascript
复制
@Echo Off
@For /F "tokens=1,2,3,4 delims=-/ " %%A in ('Date /t') do @(
Set Day=%%A
Set Month=%%B
Set Year=%%C
Set All=%%A-%%B-%%C
)
@For /F "tokens=1,2,3 delims=:,. " %%A in ('echo %time%') do @(
Set Hour=%%A
Set Min=%%B
Set Sec=%%C
Set Allm=%%A.%%B.%%C
)
@For /F "tokens=3 delims=: " %%A in ('time /t ') do @(
Set AMPM=%%A
@Echo On
)
echo Start: %date% %time%    >> ..\log\Scriptname_%All%_%Allm%.log
sqlplus "Script" >> ..\log\Scriptname_%All%_%Allm%.log
IF %errorlevel% NEQ 0 GOTO :Error
GOTO :Success
:error
echo There was an error.
echo Stop: %date% %time%    >> ..\log\Scriptname_%All%_%Allm%.log
EXIT 1
:end
echo Success.
echo Stop: %date% %time%    >> ..\log\Scriptname_%All%_%Allm%.log
EXIT 0
EN

回答 2

Stack Overflow用户

发布于 2014-06-26 16:30:37

我认为sqlplus在默认情况下不会返回错误代码,所以总是返回0。

此线程中描述了一些用于更改此设置的选项:

Sql*plus always returns exit code 0?

另一种方法是捕获输出并对其进行解析以检测错误。

票数 0
EN

Stack Overflow用户

发布于 2014-06-26 18:14:13

您的批处理文件看起来没问题。问题很可能出在SQL*PLUS脚本上。

默认情况下,如果SQL*PLUS脚本中发生错误,SQL*PLUS不会返回错误。您可以在SQL*PLUS脚本中使用WHENEVER SQLERRORWHENEVER OSERROR,以便在出错时使用非零错误代码强制终止。

代码语言:javascript
复制
whenever sqlerror exit failure
whenever oserror exit failure

有各种选项可以更好地控制返回的代码,并控制事务行为(提交或回滚)。点击链接获取更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24425473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档