使用tsql变量设置sqlcmd变量

时间:2015-02-23 22:44:14

标签: sql-server tsql sqlcmd

似乎这种设置sqlcmd变量的方法不起作用,所以我想知道是否还有其他方法?

DECLARE @d varchar(max);
SET @d = 'foobar';

:setvar database @d
USE $(database)

注意:我意识到以这种方式使用:setvar有效但我想在T-SQL脚本中使用变量设置它而不是显式设置它。

:setvar database "foobar"

1 个答案:

答案 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变量。