我正在创建一个批处理脚本,它循环遍历通过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”的程序!