似乎这种设置sqlcmd
变量的方法不起作用,所以我想知道是否还有其他方法?
DECLARE @d varchar(max);
SET @d = 'foobar';
:setvar database @d
USE $(database)
注意:我意识到以这种方式使用:setvar
有效但我想在T-SQL脚本中使用变量设置它而不是显式设置它。
:setvar database "foobar"
答案 0 :(得分:1)
从SQLCMD的角度来看,这没有任何逻辑意义。 :setvar
是一个存在于T-SQL脚本之外的命令;它无法“看到”T-SQL脚本在运行时所做的任何事情。您可以通过any number of means设置变量,包括环境变量,选项和:setvar
本身,但不能混合运行时T-SQL执行。
重新思考您的脚本,以便SQLCMD脚本位于T-SQL脚本的“外部”,并且T-SQL脚本执行必要的运行时操作。由于您可以在T-SQL中执行动态语句,因此不需要通过T-SQL而不是相反的方式设置SQLCMD变量。