我需要將DataTable傳遞到MS SQL 2008中的存儲過程,以便同時向表中插入多行。我遇到了使用XML文檔的方法,甚至將傳遞列表作爲圖像數據。將DataTable傳遞到存儲過程的最佳方式是什麼?
完成此操作的最佳方法是什麼?
如果可能,請提供代碼示例和/或參考。
我需要將DataTable傳遞到MS SQL 2008中的存儲過程,以便同時向表中插入多行。我遇到了使用XML文檔的方法,甚至將傳遞列表作爲圖像數據。將DataTable傳遞到存儲過程的最佳方式是什麼?
完成此操作的最佳方法是什麼?
如果可能,請提供代碼示例和/或參考。
表值參數是一個不錯的選擇,我個人更喜歡創造在調用存儲過程中臨時表,並在被調用過程從臨時表中讀取。
所以代碼,這將是:
CREATE PROC DoStuff
AS BEGIN
CREATE TABLE #tobeinserted (Data1 INT, Data2 INT...)
EXEC InsertRows
END
CREATE PROC InsertRows
AS BEGIN
INSERT INTO Table1 SELECT * FROM #tobeinserted
END
這個工作可靠,因爲臨時表有一生的時間,直到它們被創建退出存儲過程。此方法的一個優點是臨時表與表值參數不同,可以定義(聚集)索引,因此這些表中的查找速度可能非常快。缺點是不能同時運行SP的兩個實例。
+1:不錯的鏈接:o) – 2010-11-26 09:26:38