加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer2008提供的新的表值参数

发布时间:2020-12-12 12:48:43 所属栏目:MsSql教程 来源:网络整理
导读:经常我们会遇到需要一次往数据表中插入多行数据。此时,最简单的莫过于调用存储过程。 幸运的是,SQL Server 2008提供了新的 表值参数 ,可以一次性传入并处理多个行集。 示例如下: [sql] ? view plain copy print ? /*************一次插入N个行集*********

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

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

示例如下:

[sql]? view plain copy print ?
  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)?NULL??
  9. )??
  10. GO??
  11. ----下面我们用这个表变量做参数,通过存储过程调用它??
  12. CREATE?Procedure?dbo.CPP_InsertMultiRows??
  13. (@ManyRows?as?tp_Demo_MultiRowsInsert?readonly??
  14. as??
  15. INSERT?[dbo].[tb_Demo_MultiRowsInsert]??
  16. SELECT?PName,GName?from?@ManyRows??
  17. ----程序中构造多个行集??
  18. DECLARE?@tmpRows?as?tp_Demo_MultiRowsInsert??
  19. ??
  20. ----插入多个数据到参数表中??
  21. INSERT?@tmpRows(PName,GName)?values('胡一刀','国土资源部')??
  22. values('胡青牛','医药局')??
  23. values('令狐冲','文广中心')??
  24. ----传递参数到存储过程,完成一次多行集插入??
  25. EXEC?dbo.CPP_InsertMultiRows?@tmpRows??

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

http://www.voidcn.com/article/p-rxmltblf-su.html

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读