表值参数(Table-valued parameter)是SQL Server 2008的一个新特性,在以前的版本中,没有办法把表变量当作一个参数传递给存储过程。微软在SQL Server2008中引入了表值参数的特性,可以实现这项功能。
表值参数有两大优点:一是它不需要为初始的数据加锁,二是它不会导致语句重新编译。
表值参数的创建和使用包括以下步骤:
1) 创建表类型
2) 创建一个可将表类型作为参数来接受的存储过程或函数
3) 创建表变量并插入数据
4) 调用该存储过程和函数,并将表变量作为参数传递。
下面,我们来一步步分解这个创建和使用的过程。首先,我们用以下的DDL SQL语句来创建一个名为“TestDB”的测试数据库:
USE [master] 然后,使用以下的DML SQL语句将数据添加到我们上面创建的表中:
下一步,大家要创建一个和TestLocationTable表具有相似表结构的表类型(TABLE TYPE),语句如下:
USE [TestDB] 紧接着,大家要创建一个可以将表类型作为一个参数来接受的存储过程,使用的语句如下:
USE [TestDB] 查询结果如下所示:
Id, shortname, name 从返回的结果,我们可以看到存储过程usp_InsertProdLocation 插入了表变量@TV中和表TestLocationTable所有不匹配的行。
我们还可以将表变量传递给一个函数。下面我们创建一个简单的函数,语句如下:
执行结果如下:
(1 row(s) affected) 
注:上面所演示的脚本都是在SQL Server 2008 CTP6版本上进行编写并经过测试的。
上一篇返回首页 下一篇
声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。
别人在看
Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持
Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处
Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...
| | | | |