SSMS 2012 concat的两个变量不接受其他变量的值

时间:2016-09-21 09:56:06

标签: sql sql-server variables sql-server-2012 declaration

我将两个变量连接成一个有一些问题,也许有人会告诉我我做错了什么,或者甚至可以做我想做的事情。 我有一些声明的变量 - VAR1,VAR2等。所有这些变量都被声明了。我想要做的是将两个变量(变量的第二部分是动态生成的,它是当前的迭代次数)连接到一个并在代码中使用这个变量。

我的代码的示例部分:

DECLARE @LoopCounter INT = 1, @MaxVar INT = 10;


DECLARE @VAR1 varchar(15) = '12345'
DECLARE @VAR2 varchar(15) = '67890'
DECLARE @VAR3 varchar(15) = '246810'
....


WHILE(@LoopCounter <= @MaxVar)
BEGIN

DECLARE @a varchar(4)= '@VAR'
DECLARE @b varchar(2)=  cast (@LoopCounter as varchar(2))
DECLARE @c varchar(6)= @a + @b

SELECT 
(SELECT fullname FROM company WHERE company_id = @c) as Vendor,
,@c as company_id
...

SET @LoopCounter = @LoopCounter + 1 
END;

不幸的是,我收到的只是:

Vendor  company_id
-----   ----------
null    @VAR1
null    @VAR2
null    @VAR3
...     ...

我尝试了很多组合,例如。

SELECT 
(SELECT fullname FROM company WHERE company_id = '@VAR + cast (@LoopCounter as varchar(2))') as Vendor,
,'@VAR + cast (@LoopCounter as varchar(2))' as company_id
...

SELECT 
(SELECT fullname FROM company WHERE company_id = @VAR + ' + @b + ') as Vendor,
,@VAR + ' + @b + ' as company_id
...

但我所拥有的只是声明od @ VAR's。

为什么@a + @b的连续,在第一次迭代中是'@ VAR1',不会将值赋给@ VAR1 - &gt; '12345'?为什么它是字符串,而不是变量的值?我应该改变或做什么才能做到这一点?

请帮助:)

0 个答案:

没有答案