脚本变量到环境变量,反之亦然

时间:2014-03-28 10:09:25

标签: batch-file sqlcmd

当我们在sqlcmd脚本中为批处理脚本编写代码时,我们能否将脚本变量的值传递给环境变量,反之亦然?

1 个答案:

答案 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"
    ....
)

处理输出/文件并将数据分配给变量。