我正在将数据插入临时表并查询临时表失败
DECLARE @SQLQuery AS NVARCHAR(500)
SET @SQLQuery = 'SELECT Top 100 *
INTO #tempTable
FROM ' + @origDB + '.dbo.' + @origTable + ' o WITH (NOLOCK) '
EXECUTE sp_executesql @SQLQuery
当我尝试查询临时表时,如此
select * from #tempTable
我收到以下错误:
无效的对象名称'#tempTable'。
答案 0 :(得分:3)
由MSDN提供
您遇到的问题是范围。 TEMP表是在EXEC()方法的范围内创建的,因此在函数返回后它不可用。要解决此问题,请在调用EXEC()之前创建临时表,并使用INSERT INTO而不是SELECT INTO。
答案 1 :(得分:2)
正如其他人所说,临时表的范围仅限于创建它的会话上下文 - 存储过程在其自己的上下文中运行。
你可以使用全局临时表##tempTable
,但它通常是个坏主意,因为除了创建它之外的其他会话可以使用它。