의 이상한 DOS 배치 스크립트보고 아래 스크립트에서 SQL 오류가 발생하면 %errorlevel%
이 0 인 이유는 무엇입니까?% errorlevel %
IF %RELEASE% GTR 2 (
(
echo WHENEVER SQLERROR EXIT FAILURE
echo @release.sql
echo exit
) | sqlplus x/[email protected]
echo error: %errorlevel%
if %errorlevel% gtr 0 goto dberror
)
if 블록을 제거하면 % errorlevel %은 (는) 0이 아닙니다! if 문이 오류 수준에 영향을주는 이유는 무엇입니까?
(
echo WHENEVER SQLERROR EXIT FAILURE
echo @release.sql
echo exit
) | sqlplus x/[email protected]
echo error: %errorlevel%
if %errorlevel% gtr 0 goto dberror
업데이트
: 그것은 내가 오류를 테스트 한 방법이었다 생각합니다. 내가 대신의 생각 :if %errorlevel% gtr 0 goto dberror
.. 사용한다 :
if errorlevel 1 goto dberror
유용한 링크 here
예. 'errorlevel 1'은 실제로 'errorlevel이 1 이상인 경우'를 의미합니다. Errorlevel은 환경 변수가 아닙니다. 마지막으로 실행 된 프로세스의 종료 코드를 나타내며 자체의 작은 if 구문을 갖습니다. : D – GolezTrol
@GolezTrol : 검사를위한 자체 구문을 가지고 있지만 환경 변수이기도하고 다른 변수와 마찬가지로 사용할 수 있습니다 : 매개 변수로 매개 변수 전달, 반향 출력 ... –