来自SSMS的sqlcmd模式 - setvar赋值给替换变量可能吗?

时间:2012-11-01 18:20:07

标签: sql-server-2008

我正在启用SQLCMD模式的SSMS 2008R2上运行它。

使用以下代码:

:SETVAR GREETING "HELLO"
:SETVAR SALUTATION $(GREETING)

SELECT '$(GREETING)'
SELECT '$(SALUTATION)'

我在结果中看到以下内容:

HELLO
$(GREETING)

我希望看到:

HELLO
HELLO

有没有办法在另一个脚本变量的赋值中使用脚本变量?如果是这样,语法是什么?

2 个答案:

答案 0 :(得分:2)

变量替换:SETVAR不起作用,因为在这种情况下它只是一个令牌替换。

您可以模拟您期望的行为:

:SETVAR GREETING "HELLO"

DECLARE @salutation VARCHAR(5) = $(GREETING);
SELECT @salutation;

问候。

答案 1 :(得分:1)

如果您需要,您也可以这样做:

DECLARE @firstVar VARCHAR(30) = 'theUltimateValue';

:setvar secondValue @firstVar

select $(secondValue) as whatIReallyWant

返回

whatIReallyWant
------------------------------
theUltimateValue