经常写数据库SQL脚本的朋友,对数据库的本地表(table)肯定不会陌生,我们的数据,大多都是通过表进行存储。除了本地表之外,功能比较类似的还包括临时表、表变量、公用表、表类型、内存表等,她们的含义和用途各不相同。今天我们就好好说说SQLServer中的表变量。

什么是表变量?
顾名思义,表变量是一种特殊的表,同时又是一种特殊的变量。表变量从SQL Server 2000开始引入,主要应用在存储过程和自定义函数中。
表变量首先是变量,这就决定了其作用域主要在存储过程和自定义函数内部。您在使用的时候,需要先定义后使用,并不需要而且无法通过脚本释放,表变量在存储过程和自定函数执行结束时自动释放。这一点与内部临时表类似。
表变量是一种特殊的表,与定与本地表结构的方法类似,需要定义表名、字段、字段类型等。但表变量与本地表和临时表存在本质的区别。可以理解为表变量主要是在内存中暂存(有时候也会像临时表一样存入tempdb中)用完即焚,而本地表和临时表真实存在于数据库中。
为什么要使用表变量?
表变量与本地表和临时表相比,具有如下优点:
- 与其它变量的定义一样,表变量具有良好的作用范围,并会被自动清除。