【问题标题】:Using one variable in the SET statement of another variable在另一个变量的 SET 语句中使用一个变量
【发布时间】:2013-07-21 20:52:18
【问题描述】:

我正在编写一个批处理脚本,它使用SQLCMD 将表从数据库服务器转储到本地计算机上。为此,我构造了查询,以便可以灵活地指定表名。查询根据表名构造,然后在SQLCMD 命令中使用。构造查询的代码sn-p如下所示:

@echo off
SET tableName = testDB
SET dumpTable="SET NOCOUNT ON; SELECT * FROM %tableName%"
ECHO %dumpTable%

在运行此脚本时,我得到以下输出

"SET NOCOUNT ON; SELECT * FROM "

tableName 变量未在 set 语句中被替换。我应该如何修改我的脚本来实现这个输出:

"SET NOCOUNT ON; SELECT * FROM testDB"

【问题讨论】:

    标签: batch-file sqlcmd


    【解决方案1】:

    在变量赋值中,= 符号周围不得有空格。替换这个:

    SET tableName = testDB
    

    用这个:

    SET tableName=testDB
    

    另外,你不应该在变量赋值中使用双引号,因为这样双引号将成为值的一部分。更好的做法是在整个赋值两边加上双引号,然后在使用时根据需要引用变量,例如:

    set "tableName=testDB"
    set "dumpTable=SET NOCOUNT ON; SELECT * FROM %tableName%"
    sqlcmd -d database -q "%dumpTable%"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多