在批处理文件上循环SQLCMD结果

时间:2014-07-14 12:44:20

标签: sql-server batch-file sqlcmd

我正在使用folling .cmd来获取一个sql语句返回的值。

@echo off
SET SERVER=.\SQLExpress 
SET SQLCMD="C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe"
for %%f in (%SQLCMD%) do set alternatepath=%%~sf

SET EXEC_LINE=%alternatepath% -S %SERVER% -d SkpMaster -h-1 -Q "set nocount on; select distinct id from sometable "

for /F "usebackq delims=" %%i in (`%EXEC_LINE%`) do (
    set count=%%i
    echo %count%
)

if not defined count (
    echo Failed to execute SQL statement 1>&2
)

SQL返回4次,但回显打印4次1次。

也许我没有正确使用“delims =”选项,我也用“tokens = *”测试了相同的结果。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在以不同方式处理参数%% i后修复。

@echo off
SET SERVER=.\SQLExpress 
SET SQLCMD="C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe"
for %%f in (%SQLCMD%) do set alternatepath=%%~sf

SET EXEC_LINE=%alternatepath% -S %SERVER% -d SkpMaster -h-1 -Q "set nocount on; select distinct id from sometable "

for /F "usebackq delims=" %%i in (`%EXEC_LINE%`) do call :processline %%i

if not defined count (
    echo Failed to execute SQL statement 1>&2
)

pause
goto :eof

:processline
echo line=%*
goto :eof

:eof