批处理 - 参数不在for循环中的SQLCMD

时间:2017-07-20 10:45:31

标签: batch-file sqlcmd

我正在创建一个批处理脚本,它循环遍历通过SQLCMD返回的SQL结果集的所有结果

我之前没有遇到任何问题,但是这次的不同之处在于SQL脚本接受了一个参数,这似乎是造成问题的原因

如果我使用以下代码创建批处理文件,该语句将按预期返回记录:

sqlcmd -S MyServer\MyInstance -d MyDatabase -U sa -P MyPassword -i C:\MySQLFile.sql -v Surname="Smith"

这会将姓氏为Smith的所有记录返回到控制台窗口。一切都好。到目前为止。

但是,假设我想为FOR循环中返回的每条记录做一些事情

FOR /f "tokens=1" %%i IN ('sqlcmd -S MyServer\MyInstance -d MyDatabase -U sa -P MyPassword -i C:\MySQLFile.sql -v Surname="Smith"') DO (
    echo hello
)

我得到了

Sqlcmd: 'Smith': Invalid argument. Enter '-?' for help.

如果我更改SQL脚本使其没有参数,我可以这样做(但删除-v并且它可以工作:

FOR /f "tokens=1" %%i IN ('sqlcmd -S MyServer\MyInstance -d MyDatabase -U sa -P MyPassword -i C:\MySQLFile.sql) DO (
echo hello
)

不确定我是否需要一些特殊的方法来处理FOR循环中的SQL CMD参数?

PS,这个问题已经匿名发布在这里了,我显然不是真的在编写一个为数据库中的每个Smith编写“hello”的程序!

0 个答案:

没有答案