SQLServer2008提供的新的表值参数

经常我们会遇到需要一次往数据表中插入多行数据。此时,最简单的莫过于调用存储过程。

幸运的是,SQL Server 2008提供了新的表值参数,可以一次性传入并处理多个行集。

示例如下:

  1. /*************一次插入N个行集******************/  
  2. /********* 3w@live.cn 邀月***************/  
  3.   
  4. ----首先,我们定义一个表值参数类型,其实就是一个表变量  
  5. Create type dbo.tp_Demo_MultiRowsInsert as Table  
  6. (  
  7. [PName] [Nvarchar](20) NOT NULL,  
  8. [GName] [Nvarchar](20) NOT NULL  
  9. )  
  10. GO  
  11.   
  12. ----下面我们用这个表变量做参数,通过存储过程调用它  
  13. CREATE Procedure dbo.CPP_InsertMultiRows  
  14. (@ManyRows as tp_Demo_MultiRowsInsert readonly  
  15. )  
  16. as  
  17. INSERT [dbo].[tb_Demo_MultiRowsInsert]  
  18. SELECT PName,GName from @ManyRows  
  19.   
  20. GO  
  21.   
  22. ----程序中构造多个行集  
  23. DECLARE @tmpRows as tp_Demo_MultiRowsInsert  
  24.   
  25. ----插入多个数据到参数表中  
  26. INSERT @tmpRows(PName,GName) values('胡一刀','国土资源部')  
  27. INSERT @tmpRows(PName,GName) values('胡青牛','医药局')  
  28. INSERT @tmpRows(PName,GName) values('令狐冲','文广中心')  
  29.   
  30. ----传递参数到存储过程,完成一次多行集插入  
  31. EXEC dbo.CPP_InsertMultiRows @tmpRows  

  注意:这种一次转入多个参数的模式与SQL Servrer 2008新增的Values((group1),(group2),...,(groupn))的方式很类似,后者的应用可以看这里:

http://blog.csdn.net/downmoon/article/details/5936706

  小结:SQL Server 2008 新增参数类型-表值参数,使用用户定义的表类型来声明,借助它,可以不必创建临时表或许多参数,即可向存储过程发送多行数据。对于某些繁忙的系统,这减少了应用程序和数据库服务器之间的交互,从而减少了占用的带宽,数据库端的事务处理更高效。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值