我有以下查询:
DECLARE @QUERY NVARCHAR(400)='
INSERT INTO #AA(ID)
SELECT ID FROM BB
'
DECLARE @CREATETABLE NVARCHAR(400)='
IF OBJECT_ID(''tempdb..#AA'') IS NOT NULL DROP TABLE #AA
CREATE TABLE #AA
(
ID INT
)
'
EXEC sp_ExecuteSql @CREATETABLE
EXEC sp_ExecuteSql @QUERY
我需要#AA
使用 SELECT 获取表。
您至少不能使用临时表。类型表
#tabla
仅在创建它的会话中可见。在您的示例中,临时表是在 sp_ExecuteSql 上下文中创建的,因此当您退出它时,该表将不复存在。据我所知,解决它的唯一方法是CREATE
在范围之外进行sp_ExecuteSql
,例如:注意:至少在 SQL Server 上
这是获取包含数据的临时表的示例:
将@QryToFillTempTable 声明为 NVARCHAR(MAX)
设置 @QryParaFillTemporalTable = ' INSERT INTO ##A(ID) SELECT Id FROM Requirement '
执行 sp_executesql @QryToFillTemporalTable
选择 * 从 ##A