相关疑难解决方法(0)

存储过程中exec中临时表的作用域规则是什么?

比较以下存储过程:

CREATE PROCEDURE testProc1
AS
    SELECT * INTO #temp FROM information_schema.tables
    SELECT * FROM #temp
GO

CREATE PROCEDURE testProc2
AS
    EXEC('SELECT * INTO #temp FROM information_schema.tables')
    SELECT * FROM #temp
GO
Run Code Online (Sandbox Code Playgroud)

现在,如果我运行testProc1,它可以工作,并且#temp似乎只在该调用期间存在.但是,testProc2似乎根本不起作用,因为我收到了Invalid object name '#temp'错误消息.

为什么区别,SELECT * INTO如果源表名是存储过程的参数并且可以具有任意结构,我如何使用临时表?

请注意,我正在使用Microsoft SQL Server 2005.

sql t-sql stored-procedures exec temp-tables

4
推荐指数
1
解决办法
1708
查看次数

标签 统计

exec ×1

sql ×1

stored-procedures ×1

t-sql ×1

temp-tables ×1