Sql server 如何显示动态插入值的临时表
基本上,我有一个TSQL,它在数据库的所有表中查找一个条件,并尝试将记录插入这个临时表中。我很难在执行结束时显示此临时表#TEMP1Sql server 如何显示动态插入值的临时表,sql-server,tsql,temp-tables,Sql Server,Tsql,Temp Tables,基本上,我有一个TSQL,它在数据库的所有表中查找一个条件,并尝试将记录插入这个临时表中。我很难在执行结束时显示此临时表#TEMP1 OPEN MyCursor; FETCH NEXT FROM MyCursor INTO @Table WHILE @@FETCH_STATUS = 0 BEGIN set @SQL = N'IF EXISTS(select 1 from Prod.' + @Table + ' where usedDate IS NULL)' + 's
OPEN MyCursor;
FETCH NEXT FROM MyCursor INTO @Table
WHILE @@FETCH_STATUS = 0 BEGIN
set @SQL = N'IF EXISTS(select 1 from Prod.' + @Table + ' where usedDate IS NULL)' +
'select ''' + @Table + ''' as TableName,* INTO #TEMP1 from Prod.' + @Table + ' WHERE usedDate IS NULL '
EXECUTE sp_executesql @SQL
FETCH NEXT FROM MyCursor INTO @Table
END;
CLOSE MyCursor;
DEALLOCATE MyCursor;
而不是中的#TEMP1
'select ''' + @Table + ''' as TableName,* INTO #TEMP1 from Prod.' + @Table + ' WHERE usedDate IS NULL '
您可以将全局temp##TEMP1表用作
'select ''' + @Table + ''' as TableName,* INTO ##TEMP1 from Prod.' + @Table + ' WHERE usedDate IS NULL '
但请注意,如果游标迭代,这将失败,因为您不能多次插入到表中
为了解决这个问题
将@Table的值连接到##TEMP1
或者在下一次迭代之前,删除表##TEMP1,因为#temp是在动态SQL中创建的,所以只能在该范围内访问它