如何在 Select 子句中使用变量
How to use variable in Select clause
我需要在 select 子句中调用变量的方法。
例如。 Table 名称“TableList”包含 table 个名称的列表。
DECLARE @CounterNumber INT = 1
Declare @name varchar(255)
Set @name = (Select Name from TableList where id = @CounterNumber)
WHILE @CounterNumber <= 3
select top 10 * from @name
set @CounterNumber = @CounterNumber + 1
错误信息 -
必须声明 table 变量“@name”。
我也使用了“quotename()”,但仍然出现同样的错误。
您需要使用动态 SQL:
WHILE @CounterNumber <= 3
BEGIN
SELECT @name Name
FROM TableList
WHERE id = @CounterNumber;
DECLARE @sql = NVARCHAR(MAX);
SET @sql = 'select top 10 * from @name';
SET @sql = REPLACE(@sql, '@name', quotename(@name));
EXEC sp_executesql @sql;
SET @CounterNumber = @CounterNumber + 1;
END;
我需要在 select 子句中调用变量的方法。 例如。 Table 名称“TableList”包含 table 个名称的列表。
DECLARE @CounterNumber INT = 1
Declare @name varchar(255)
Set @name = (Select Name from TableList where id = @CounterNumber)
WHILE @CounterNumber <= 3
select top 10 * from @name
set @CounterNumber = @CounterNumber + 1
错误信息 - 必须声明 table 变量“@name”。
我也使用了“quotename()”,但仍然出现同样的错误。
您需要使用动态 SQL:
WHILE @CounterNumber <= 3
BEGIN
SELECT @name Name
FROM TableList
WHERE id = @CounterNumber;
DECLARE @sql = NVARCHAR(MAX);
SET @sql = 'select top 10 * from @name';
SET @sql = REPLACE(@sql, '@name', quotename(@name));
EXEC sp_executesql @sql;
SET @CounterNumber = @CounterNumber + 1;
END;