使用tsql变量设置sqlcmd变量



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

DECLARE @d varchar(max);
SET @d = 'foobar';
:setvar database @d
USE $(database)

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

:setvar database "foobar"

从SQLCMD的角度来看,这没有任何逻辑意义。:setvar是一个存在于T-SQL脚本之外的命令;它看不到t-SQL脚本在运行时所做的任何事情。您可以通过多种方式设置变量,包括环境变量、选项和:setvar本身,但不能在运行时混合执行t-SQL。

重新思考您的脚本,使SQLCMD脚本"位于"T-SQL脚本之外,并且T-SQL脚本执行必要的运行时操作。由于您可以在T-SQL中执行动态语句,因此不需要通过T-SQL设置SQLCMD变量,而不是相反。

最新更新