I need way to call variable in select clause. Eg. Table name “TableList” contains the list of table names.
x
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
Error Message – Must declare the table variable “@name”.
I used “quotename()” as well but still getting the same error.
Advertisement
Answer
You would need to use dynamic 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;