【问题标题】:How to display a temp table where values are inserted dynamically如何显示动态插入值的临时表
【发布时间】:2020-05-22 02:04:04
【问题描述】:

基本上我有这个 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)' + 
 '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;

【问题讨论】:

  • 由于#temp是在动态SQL中创建的,所以只能在该范围内访问

标签: sql-server tsql temp-tables


【解决方案1】:

而不是 #TEMP1

'select ''' + @Table + ''' as TableName,* INTO #TEMP1 from Prod.' + @Table + ' WHERE usedDate IS NULL '

您可以使用全局临时 ##TEMP1 表作为

'select ''' + @Table + ''' as TableName,* INTO ##TEMP1 from Prod.' + @Table + ' WHERE usedDate IS NULL '

但请注意,如果游标迭代,这将失败,因为您不能多次插入表中。

解决这个问题

@Table 的值连接到 ##TEMP1

或在下一次迭代之前,删除表##TEMP1

【讨论】:

    猜你喜欢
    • 2017-09-17
    • 1970-01-01
    • 2022-01-15
    • 2010-10-24
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多