如何在 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;