SQL SERVER 临时表与表变量的使用方法
SQL SERVER的临时表有本地临时表和全局临时表之分,在联机丛书中这样描述:
有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft® SQL Server™ 2000 实例断开连接时被删除。全局临时表的名称以数学符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。
在存储过程中创建的本地临时表,相当于存储过程的变量,只在存储过程内可见,而在前台程序中创建的本地临时表,就和微软联机丛书中所写的一样,是对当前的用户连接可见。了解了这些,可以在不同场合不同需求下使用不同的方法来创建本地临时表,这样,会使临时表发挥它最大的用处。
The sql code:
-
- /*****************表变量********************/
- declare @t table(
- cataid int
- )
-
- insert into @t select a.cataid from f_getchlid(27,'5961051') a
- select top 10 favorites.*,multicata.cataname
- from favorites left outer join multicata on favorites.cataid=multicata.cataid
- where favorites.userid='5961051' and favorites.cataid in (
- select * from @t)
-
-
- /****************临时表************************/
- 方法一、
- select a.cataid into #t from f_getchlid(27,'5961051') a
- select top 10 favorites.*,multicata.cataname
- from favorites left outer join multicata on favorites.cataid=multicata.cataid
- where favorites.userid='5961051' and favorites.cataid in (
- select * from #t)
- drop table #t
-
-
- 方法二、
- create table #t (
- cataid int
- )
- insert into #t select a.cataid from zhaoguoguang.f_getchlid(27,'5961051') a
- select top 10 favorites.*,multicata.cataname
- from favorites left outer join multicata on favorites.cataid=multicata.cataid
- where favorites.userid='5961051' and favorites.cataid in (
- select * from #t)
- drop table #t
The sql code:
- /*****************表变量********************/
- declare @t table(
- cataid int
- )
- insert into @t select a.cataid from f_getchlid(27,'5961051') a
- select top 10 favorites.*,multicata.cataname
- from favorites left outer join multicata on favorites.cataid=multicata.cataid
- where favorites.userid='5961051' and favorites.cataid in (
- select * from @t)
- /****************临时表************************/
- 方法一、
- select a.cataid into #t from f_getchlid(27,'5961051') a
- select top 10 favorites.*,multicata.cataname
- from favorites left outer join multicata on favorites.cataid=multicata.cataid
- where favorites.userid='5961051' and favorites.cataid in (
- select * from #t)
- drop table #t
- 方法二、
- create table #t (
- cataid int
- )
- insert into #t select a.cataid from zhaoguoguang.f_getchlid(27,'5961051') a
- select top 10 favorites.*,multicata.cataname
- from favorites left outer join multicata on favorites.cataid=multicata.cataid
- where favorites.userid='5961051' and favorites.cataid in (
- select * from #t)
- drop table #t