sqlserver 2008 关于存储过程中的临时表。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 2008 关于存储过程中的临时表。相关的知识,希望对你有一定的参考价值。

在存储过程中如果我使用select a,b,c into #abc from abc创建临时表 在存储过程后面写 select 或者drop语句操作临时表都没有问题。

现在我在存储过程中把sql语句拼接好后放在变量中set @sql = 'select a,b,c into #abc from abc' 然后使用exec(@sql)执行后 再在存储过程后面使用select或drop 语句操作临时表#abc的时候就提示找不到临时表。 这种该怎么处理比较好? 如果前面直接使用create来创建临时表#abc就不会出现这类问题。
存储过程中创建临时表:select 列1,列2, 列3 INTO #临时表 FROM 表名
这样创建的临时表 在存储过程后面可以直接使用:select * from #临时表 或:drop table #临时表
可对临时表操作 这样是正常的

但如果我们在存储过程中把创建临时表换个方式创建:
declare @sql varchar(255)
set @sql = 'SELECT 列1, 列2, 列3 INTO #临时表 FROM 表名'
exec (@sql)
这样执行完成后也会生成#临时表
但是在存储过程中使用:SELECT * FROM #临时表 却提示找不到对象#临时表

exec (@sql)相当于重建数据库连接,局部临时表仅在连接内有效

可以考虑全局临时表##临时表
参考技术A 没听明白,能说的具体点吗?

以上是关于sqlserver 2008 关于存储过程中的临时表。的主要内容,如果未能解决你的问题,请参考以下文章

关于sqlserver临时表的问题,请教高手!

5.SQL Server 2008 数据库

如何返回sqlserver 中存储过程的select的结果集

SQLServer 中的存储过程中判断临时表是否存在,存在则删除临时表

SQL SERVER2008里面sql语句删除临时表失败

SQLServer 2008:来自 JAVA 的存储过程调用在执行插入和更新语句时返回错误