for循环使用sql语句的批处理文件

时间:2014-08-26 20:48:21

标签: sql-server batch-file

我已编写批处理文件以从sql server打印出max(ID)。我看到循环,循环两次,一旦打印正确的iD数字,并在下一次迭代中打印一个括号'('。我不知道为什么它迭代两次。

@echo on 
set maxid=0
echo %maxid%
timeout /t 10
for /F "usebackq tokens=1" %%i in (`sqlcmd -E -S "DBNAME\instance01" -h-1 -Q "select max(ID) from table1"`) do set maxid=%%i
echo testingcount 
echo %maxid%
timeout /t 10
if %maxid% NEQ 0 (
echo count not zero
echo %maxid%
timeout /t 10
goto end
) else if %maxid% EQU 0(
echo count is zero
timeout /t 10
}
:end
echo END

由于

1 个答案:

答案 0 :(得分:1)

我认为您可能已经获得了一些您不想要的输出((1 row(s) affected)。请尝试这样做:

@echo off
set maxid=0
echo %maxid%
timeout /t 10
for /F "usebackq tokens=1" %%i in (`sqlcmd -E -S "DBNAME\instance01" -h-1 -Q "set nocount on;select max(id) from table1"`) do set maxid=%%i
echo testingcount 
echo %maxid%
timeout /t 10

if %maxid% GTR 0 (
    echo count not zero
    echo %maxid%
    timeout /t 10
    goto end
) else (
    if %maxid% EQU 0 (
        echo count is zero
        timeout /t 10
    )
)
:end
echo END