declare @TableName nvarchar(max)
set @TableName='addresses'
DECLARE @sql NVARCHAR(MAX)
set @sql= 'create table #tempadd ( '
SELECT @sql=@sql + STUFF( -- Remove first comma
(
SELECT ', ' + column_name+' '+ case when DATA_TYPE='varchar' then DATA_TYPE +'(500)' else DATA_TYPE end FROM -- create comma separated values
(
SELECT column_name,DATA_TYPE FROM information_schema.columns where table_name = @TableName --Your query here
) AS T FOR XML PATH('')
)
,1,1,'')
set @sql =@sql+' ) '
print @sql
--SET @sql='SELECT * into #tempadd FROM '+@TableName+ ' WHERE 1=2'
EXEC sp_executesql @sql
select * from #tempadd
This results in an error:
Msg 208, Level 16, State 0, Line 25
Invalid object name ‘#tempadd’.
Your temp table is limited to the scope of your dynamic query since it is defined within.
You could add your
select * from #tempaddstatement to the end of your@sqlquery. Alternatively I think you can define #tempadd before your dynamic query and it should be accessible, but I’m not certain on that.