表名前加#表示这是一个临时表
例如在存储过程中声明一个临时表
Create table #tmp
(
ID varchar(50)
,Name varchar(50)
)
或者
select * into #tab from User
这二种都是创建临时表
本地临时表VS全局临时表以下是SQL2000联机帮助的原文
==========================================================================
临时表
SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。
临时表有两种类型:
本地临时表
以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表。
全局临时表
以 两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即 被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表 的连接断开,全局临时表即被除去。
exec ('select top 10 * into #temp from syhouse');
exec ('select * from #temp');
在sqlserver2005中,我执行这样两条语句,显示
消息 208,级别 16,状态 0,第 1 行
对象名 '#temp' 无效。
exec('select top 10 * into #temp from syhouse select * from #temp');
--or
exec('select top 10 * into ##temp from syhous')
exec ('select*from##temp');