如何在单个存储过程调用中插入N条记录

时间:2013-03-12 21:52:16

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

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

说我有这个表定义:

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)

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

1 个答案:

答案 0 :(得分:3)

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

Singleton,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。