转自:http://chenxing.blog.51cto.com/240526/44613
Table数据类型是一种特殊的数据类型,用于存储结果集以供后续处理。该数据类型主要用于临时存储一组行,这些行将作为表值函数的结果集返回
Table数据类型最主要的用途是作为多条数据记录的临时存储之处,此外还可以作为一个用户定义函数的返回值。
用户需要注意使用DECLARE @local_variable来声明table类型的变量
--声明TABLE变量@Var_tableGoods
DECLARE @Var_tableGoods TABLE
(
订单编号 [int] NOT NULL,
书籍编号 [int] NOT NULL,
单价 [money] NOT NULL,
数量 [smallint] NOT NULL,
折扣 [real] NOT NULL
)
--将”作者表”中统计的数据添加到TABLE变量@Var_tableAuthor
INSERT INTO @Var_tableGoods
SELECT * FROM 订货表
Table数据类型最主要的用途是作为多条数据记录的临时存储之处,此外还可以作为一个用户定义函数的返回值。
用户需要注意使用DECLARE @local_variable来声明table类型的变量
--声明TABLE变量@Var_tableGoods
DECLARE @Var_tableGoods TABLE
(
订单编号 [int] NOT NULL,
书籍编号 [int] NOT NULL,
单价 [money] NOT NULL,
数量 [smallint] NOT NULL,
折扣 [real] NOT NULL
)
--将”作者表”中统计的数据添加到TABLE变量@Var_tableAuthor
INSERT INTO @Var_tableGoods
SELECT * FROM 订货表
--将TABLE变量@Var_tableAuthor中的内容显示出来
SELECT * FROM @Var_tableGoods
Table变量有以下优点:
1)Table变量的行为类似于局部变量,定义有明确的作用域,该作用域为声明该变量的函数、存储过程或批处理的作用范围。
2)在其作用域内,table变量可像常规表那样使用。该变量可应用于SELECT、INSERT、UPDATE和DELETE语句中用到表或表的表达式的地方。
3)在定义table变量的函数、存储过程或批处理结束时,自动清除table变量
4)在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。
5)涉及表变量的事务只在表变量更新期存在,这样就减少了表变量对锁定和记录资源的需求。
6)不支持在表变量之间进行赋值操作。另处,由于表变量作用域有限,并且不是持久数据库的一部分,因而不受事务回滚的影响。
SELECT * FROM @Var_tableGoods
Table变量有以下优点:
1)Table变量的行为类似于局部变量,定义有明确的作用域,该作用域为声明该变量的函数、存储过程或批处理的作用范围。
2)在其作用域内,table变量可像常规表那样使用。该变量可应用于SELECT、INSERT、UPDATE和DELETE语句中用到表或表的表达式的地方。
3)在定义table变量的函数、存储过程或批处理结束时,自动清除table变量
4)在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。
5)涉及表变量的事务只在表变量更新期存在,这样就减少了表变量对锁定和记录资源的需求。
6)不支持在表变量之间进行赋值操作。另处,由于表变量作用域有限,并且不是持久数据库的一部分,因而不受事务回滚的影响。