【问题标题】:How to set a sqlcmd output to a batch variable?如何将 sqlcmd 输出设置为批处理变量?
【发布时间】:2014-12-23 16:27:01
【问题描述】:

我正在尝试将 sqlcmd 查询的输出设置为批处理文件中的变量。

这是我的查询:

sqlcmd -S <SERVER> -d <DATABASE> -Q "select max(Column1)+1 from Table1"

这正是我所期望的和我想要的:

-----------
         10
<1 rows affected>

但是,当我尝试将其设置为变量时,我使用了以下脚本:

for /f %%a in ('sqlcmd -S <SERVER> -d <DATABASE> -Q "select max(Column1)+1 from Table1"') 
    do set ColumnVar=%%a
echo %ColumnVar%
pause

这给了我这个结果:&lt;1 rows affected&gt; 我猜这是因为循环将变量设置到最后一行。那么有没有办法我可以使用标记和分隔符来解析出 10 呢?

【问题讨论】:

  • 我不是 100% 确定,但是this SO post may help
  • 谢谢,我搜索的时候没看到这个问题。
  • 您好,除非您将 do 命令与 for 循环放在同一行,否则这将不起作用

标签: sql-server batch-file for-loop batch-processing sqlcmd


【解决方案1】:

尝试开启 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

【讨论】:

  • 效果很好。我只需要修改一件事就是将"delims=" 更改为"delims= " 以获得数字输出。谢谢好心的先生!
  • 我将 sql 命令存储在批处理变量中;你能建议我如何用我的变量做到这一点?
猜你喜欢
  • 1970-01-01
  • 2014-10-10
  • 2011-09-15
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 2017-04-20
相关资源
最近更新 更多