当我们在sqlcmd脚本中为批处理脚本编写代码时,我们能否将脚本变量的值传递给环境变量,反之亦然?
答案 0 :(得分:1)
在sqlcmd中使用批处理变量
a)直接将它们放在命令行中。 cmd解析器会将变量扩展为在行
中写入的值set "lastName=Smith"
sqlcmd -Q "SELECT * From myTable Where LastName='%lastName%'"
b)在sql查询中使用声明的变量,并使用前面的方法在sqlcmd命令中声明它们。如果我们有一个包含
的query.sql
文件名
SELECT * From myTable Where LastName='$(LastName)'
然后可以进行以下调用
set "lastName=Smith"
sqlcmd -i query.sql -v LastName="%lastName%"
在批处理文件中使用sqlcmd的输出
a)将输出发送到文件(sqlcmd中的-o
开关),然后进行处理。见for /?
sqlcmd -i query.sql -o data.txt -h -1
for /f "tokens=*" %%a in (data.txt) do ....
b)直接处理命令的输出。再次使用for /f
命令。
for /f "tokens=*" %%a in ('sqlcmd -i query.sql -h -1') do ....
在这两种情况下,如果需要的是为批量变量赋值,您将拥有类似
的内容for /f "... options ..." %%a in ('sqlcmd -i query.sql -h -1') do (
....
set "varname=%%a"
....
)
处理输出/文件并将数据分配给变量。