我需要将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