2011-12-14 73 views

回答

1

感謝您使用特定的SQL版本進行標記!這是非常有用的,因爲這是一個最佳方法來實現最佳性能的一個領域,隨着每個主要的SQL版本的發生都在改變。

在SQL 2000中,典型的方法是傳入一串逗號分隔值(CSV),然後在SQL數據庫中使用UDF將它們解壓縮到表中。

在SQL 2008中,新的熱點是使用表值參數,它可以直接將數據作爲表/記錄集傳遞。使最好的代碼閱讀,並執行最好的。

但是由於您在SQL 2005上,因此無法使用表值參數。所以你最好的選擇是使用XML數據類型。這有利於勝過CSV方法。這裏有一個小例子:

CREATE PROCEDURE [dbo].[uspDeleteEmployee] 
@RecordIDs XML 
AS 
BEGIN 

    DELETE dbo.Employee 
    FROM dbo.Employee e 
    INNER JOIN @RecordIDs.nodes('RecordList/ID') AS x(Item) 
    ON e.EmployeeID = Item.value('.', 'int') 
END 
GO 

而這裏的XML字符串的一個樣本:

'<RecordList><ID>1</ID><ID>23</ID><ID>78</ID></RecordList>'