在动态 SQL 中使用 Temp 表中的值

Posted

技术标签:

【中文标题】在动态 SQL 中使用 Temp 表中的值【英文标题】:Using values from Temp table in Dynamic SQL 【发布时间】:2016-10-14 02:52:35 【问题描述】:

我有一个记录很少的临时表。我需要将它们包含在我的动态 SQL 中。我正在尝试做这样的事情

SET @SQL=@SQL + 'Select '+ @fields + ' ID from dbo.EmployeePension()' 
SET @SQL = @SQL + ' WHERE EmployeeID IN'
SET @SQL= @SQL + '(Select EmployeeID from' + #temp4 + ')'
EXEC @SQL

#temp4 是我的临时表。 我实际上是从一个单独的表中提取@fields,然后从函数中检索相同的列。

有人可以帮助我了解如何在动态 SQL 中包含临时表值。 我期待像

这样的动态SQL

Select name,age,sex from dbo.EmployeePension() where EmployeeID IN(Select EmployeeID in (100,101,102));

其中 (100,101,102) 是临时表中的值,name,age,sex 是 @fields 中的值。

【问题讨论】:

【参考方案1】:
SET @SQL = @SQL + 'Select '+ @fields + ' ID from dbo.EmployeePension()' 
SET @SQL = @SQL + ' WHERE EmployeeID IN'
SET @SQL = @SQL + '(Select EmployeeID from #temp4)'
EXEC ( @SQL )

【讨论】:

以上是关于在动态 SQL 中使用 Temp 表中的值的主要内容,如果未能解决你的问题,请参考以下文章

where 子句中的动态值

从一个表中选择一个逗号分隔的值,并使用 SQL Server 中的函数在另一个表中的 where 条件中使用它

如何在SQL Server 2012中动态替换表中的所有值?

将新列添加到现有表中并使用 PL/SQL 中游标中的值更新它们

如何将数据动态存储在C中的链表中?

Oracle 12c - 根据不同表中的值动态生成 where 子句