SQL Server 表变量的用法
SQL Server 表变量的用法定义一个sql server表格变量的方法和定义一个用户自定义表格的方法是一样的;例如:
DECLARE @T_ChartsIdeaItem1 Table(XData char(20) null,YData char(20) null)
INSERT INTO @T_ChartsIdeaItem1(XData,YData)VALUES ('BU9876', 'Creating')
select * from @T_ChartsIdeaItem1
不是所有的INSERT命令都可以对表格变量执行操作。比如,当你向一个表格变量插入变量值时,你就不能用EXEC命令。通过执行一个已保存的程序或是一系列命令来为一个表格变量插入变量值将会返回错误的结果。而且,也不是所有的SELECT命令都可以对表格变量执行操作,你不能用SELECT INTO命令来为一个表格变量插入数据。
对于sql server表格变量,你不能使用某些系统程序,比如sp_depends。运行时产生的并被随机命名的表格变量的对象名被存储在tempdb数据库中。由于大多数系统功能和系统程序需要对象名和标识代码,所以对一个表格变量执行系统功能和系统程序就是一件很困难的事。为了对一个表格变量执行系统功能和系统程序,我们需要先进行一些复杂的调整以获取该表格变量的对象名和/或标识代码。
一个表格变量的有效范围就是整个批处理,程序,或函数的处理过程。当在一段程序中发出GO命令时,表格变量就不再起作用了。
1. 为什么要使用表变量
表变量是从2000开始引入的,微软认为与本地临时表相比,表变量具有如下优点:
2、表变量的限制
与临时表相比,表变量存在着如下缺点:
3、那什么时候可以使用表变量
要使用表变量应该根据如下规则来判断:
其实也就说,得从实际出发,根据具体的查询,作出具体的选择。但是,其中很关键的一点,如果表的行数非常多,使用表变量其实是更费资源的。有人提出了这样的建议:对于行数较少的情况下(小于1000行)可以使用表变量;如果行数很多(有几万行),则使用临时表。
4、使用表变量的误区
对于表变量,很多人认为,表变量和其他变量一样,只存在内存中,其实这是不正确的,表变量也存在tempdb中。