我正在使用SQLCMD来获取表中的行数,但我也想知道查询是否遇到错误.
我使用的sqlcmd看起来像这样:
sqlcmd -S %server% -U %user% -P %pass% -b -Q "select count(*) from %table%"
Run Code Online (Sandbox Code Playgroud)
如果有效,它将返回:
-----------
10205
(1 rows affected)
Run Code Online (Sandbox Code Playgroud)
(注意,-------上面有一个空行,我没有指定列名.)
如果我传入一个不存在的表,我得到以下响应:
Msg 208, Level 16, State 1, Server devServer, Line 1
Invalid object name 'dbo.no_table'.
Run Code Online (Sandbox Code Playgroud)
由于我有-b标志,我可以检查ERRORLEVEL的值(在本例中为1).
要存储count变量,我一直在使用以下行:
for /F %%i in ('sqlcmd -S %server% -U %user% -P %pass% -b -Q "select count(*) from %table%" ^| findstr /r "[^(][0-9]"') do SET /a rec_count=%%i
Run Code Online (Sandbox Code Playgroud)
在for之后,%errorlevel%返回0.即使在do内,errorlevel也是0.
是否有任何简单的方法来运行sqlcmd,如果没有错误则存储计数,如果有错误则打印两行?