在存储过程中将DataTable插入表中

时间:2013-01-21 21:07:54

标签: c# sql sql-server-2008 stored-procedures datatable

以下是DataTable的展示方式(2列:NameCode):

Name Code

name1 code1
name2 code2
name3 code3

我想将DataTable插入到名为MyTable的现有表中,该表具有主键和2列。

我真的不知道应该如何开始编写我的存储过程,有没有办法作为参数发送DataTable或类似的东西?

谢谢。

1 个答案:

答案 0 :(得分:3)

在SQL-Server 2008中,您可以使用table valued parameters。像这样:

CREATE TYPE dbo.MyTableType AS TABLE 
(   Name    VARCHAR(5),
    Code    VARCHAR(5)
);
GO;
CREATE PROCEDURE dbo.MyProcedure (@MyTableType dbo.MyTableType READONLY)
AS
    INSERT dbo.MyTable (Name, Code)
    SELECT Name, Code
    FROM    @MyTableType;

GO;

然后只需将您的数据表作为SqlCommand中参数(SqlDbType.Structured)的值传递。

或者您可以使用SQLBulkInsert并绕过存储过程。