【发布时间】:2018-12-03 22:50:58
【问题描述】:
我正在尝试使用临时动态查询将数据插入表变量,然后使用该表变量执行最终查询。我有一个错误“必须声明标量变量”
DECLARE @t TABLE ( TableName NVARCHAR(250) )
declare @i as int = 1, @A_1 NVARCHAR(250) ='ABC', @A_2 NVARCHAR(250) ='XYZ', @A_3 NVARCHAR(250) = 'AEI';
WHILE (@i <= 3)
BEGIN
DECLARE @q NVARCHAR(MAX) = ' DECLARE @t TABLE ( TableName NVARCHAR(250) )
insert into @t
select @A_' + CAST(@i AS VARCHAR) + ' as field
from @t
'
INSERT INTO @t
EXEC(@q)
SET @i = @i + 1
END
SELECT * FROM @t
预期的结果应该是:
表名
- ABC
- XYZ
- AEI
变量@A_X 可以有 1 或 15 个变量(@A_1、@A_2....@A15)
【问题讨论】:
-
您真的需要将其作为动态查询执行吗?您可以更改数据模型以使其更灵活吗? sommarskog.se/dynamic_sql.html
-
它需要是动态的,因为变量 @A_X 可以有多个值(从 1 到 15)