问题
I'm trying to set the output of a sqlcmd query to a variable in a batch file.
Here's my query:
sqlcmd -S <SERVER> -d <DATABASE> -Q "select max(Column1)+1 from Table1"
This gives me exactly what I would expect and what I want:
-----------
10
<1 rows affected>
However, when I try to set it to a variable, I used this script:
for /f %%a in ('sqlcmd -S <SERVER> -d <DATABASE> -Q "select max(Column1)+1 from Table1"')
do set ColumnVar=%%a
echo %ColumnVar%
pause
This gives me this result instead: <1 rows affected>
I'm guessing this is because the loop is setting the variable to the last line. So is there a way I could use tokens and delims to parse out the 10 instead?
回答1:
Try turning on NOCOUNT:
for /f %%a in ('sqlcmd -S <SERVER> -d <DATABASE> -Q "SET NOCOUNT ON; select max(Column1)+1 from Table1"')
do set ColumnVar=%%a
echo %ColumnVar%
pause
来源:https://stackoverflow.com/questions/27624252/how-to-set-a-sqlcmd-output-to-a-batch-variable