2013-01-21 41 views
2

這裏是我的DataTable看起來像(2列:NameCode):插入數據表爲表中的StoredProcedure

Name Code

name1 code1 
name2 code2 
name3 code3 

我想那DataTable插入一個名爲MyTable現有的表有一個主鍵和那兩列。

我真的不知道我應該如何開始編碼我的存儲過程,有沒有辦法發送參數DataTable或類似的東西?

謝謝。

+1

你在用什麼DMBS?什麼版本? – GarethD

+0

@GarethD我正在使用sqlserver 2008 – idish

+1

http://msdn.microsoft.com/en-us/library/ex21zs8x.aspx – PinnyM

回答

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並繞過存儲過程。

+2

這裏有一個可能有用的鏈接:http://lennilobel.wordpress.com/2009/07/29/sql-server-2008-table-valued-parameters-and-c-custom-iterators-a-match-做在天堂/ –