【问题标题】:How to Insert N Records in a Single Stored Procedure Call如何在单个存储过程调用中插入 N 条记录
【发布时间】:2013-03-12 21:52:15
【问题描述】:

如何使用单个存储过程调用将未知数量的记录插入数据库?

假设我有这个表定义:

CREATE TABLE PHONE(
    PhoneID int identity(1,1),
    PhoneNumber varchar(20),
    PersonID int
)

我有以下插入存储过程:

CREATE PROCEDURE dbo.usp_Phone_Insert
    @PhoneNumber varchar(20),
    @PersonID int
AS

INSERT 
    PHONE 
VALUES
    (@PhoneNumber, @PersonID)

我如何能够将其转换为在对该存储过程的一次调用中插入任意数量的记录?

【问题讨论】:

  • 价值从何而来?
  • 您可以使用table-valued parameter 或传递包含多个电话号码的xml 参数
  • 即使可以,只要一次调用,您就会为插入的每条记录重复 PhoneNumber 和 PersonID。
  • tornambe,我认识到这一点,这就是为什么我要问如何更改存储过程。

标签: sql sql-server tsql stored-procedures bulkinsert


【解决方案1】:

我有一些博客文章,其中包含解决此主题的代码示例。

单例、XML 和 TVP 插入的性能比较 http://sqlfool.com/2008/11/performance-comparison-of-singleton-xml-and-tvp-inserts/

使用 XML 批量插入 http://sqlfool.com/2008/11/bulk-inserts-with-xml/

具有表值参数的一对多插入 http://sqlfool.com/2008/11/one-to-many-inserts-with-table-valued-parameters/

HTH。

【讨论】:

  • 谢谢。这为我指明了正确的方向;我现在知道我应该研究什么了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-12
相关资源
最近更新 更多