SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。

临时表有两种类型: 

本地临时表 
以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表。

全局临时表 
以 两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即 被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表 的连接断开,全局临时表即被除去。
==========================================================================

SQL code
--应用本地临时表 declare @sql varchar(100) set @sql='select ''123'' as a,''abasdf'' as b into #t'
 exec(@sql) select 
* from #t go /*发现不能正确显示临时表的数据 提示: 服务器: 消息 208,级别 16,状态 1,行 5 对象名 '#t' 无效。 */
 --修改为全局临时表 declare @sql varchar(100) set @sql='select ''123'' as a,''abasdf'' as b into ##t'
 exec(@sql) select * from ##t drop table ##t go /*可以正确显示临时表的数据


分析原因:exec(@sql) 相当于重新建立一个数据库对话,所以对于本地临时表,使用exec(@sql)创建临时表,
在exec外部不能正确访问;而使用全局临时表就ok了
*/ 

SQL code
exec ('select top 10 * into ##temp from syhouse'); exec ('select * from ##temp');
http://blog.csdn.net/hank5658/article/details/5543622
posted on 2012-02-16 11:17 sanmao 阅读(1869) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 

常用链接

留言簿(5)

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜