2010-11-26 43 views
2

嗨在SQL Server中將參數傳遞給存儲過程的有效方式是什麼?以有效的方式傳遞給存儲過程的參數

其實我的參數值包含像

@empids = '1,2,3,4,5,6,7,8,9'

一些這樣的事高達1000

所以我試圖通過1000逗號分隔值到一個單一參數的一些事情,這是工作精細。

但是除此之外,還有其他最好的解決方案嗎?

謝謝

+0

已經有數百次的問題了...... – 2010-11-26 06:44:41

回答

2

使用SQL Server 2008可以使用Table-Valued Parameters

除此之外,沒錯,就是接受的解決方案。

您還可以看看XML data type

+0

謝謝你的支持者。我會嘗試使用這個 – jestges 2010-11-26 06:49:17

0

可以使用XML還

等作爲

string CustomerIdXML ="<NewDataSet><Table1><Id>56</Id></Table1><Table1><Id>57</Id></Table1></NewDataSet>"; 

SqlParameter[] _param = new SqlParameter[1]; 
_param[0] = new SqlParameter("@XDoc", CustomerIdXML); 

SqlDataAccess.ExecuteNonQuery(SqlDataAccess.ConnectionString, CommandType.StoredProcedure, "sp1", _param); 

可以使用跟隨着方式

CREATE PROC [dbo].[sp1]   
    @xDoc NTEXT 
As  

DECLARE @docHandle INT   

EXEC sp_xml_preparedocument @docHandle OUTPUT, @xDoc   
BEGIN TRANSACTION   

UPDATE Tbl SET ISDelete = 1 WHERE Id IN (SELECT Id FROM OPENXML(@docHandle, '/NewDataSet/Table1', 3) WITH (Id BIGINT)) 

IF @@ERROR <> 0   
    BEGIN   
     ROLLBACK TRANSACTION   
     RETURN @@ERROR  
    END   
COMMIT TRANSACTION   

EXEC sp_xml_removedocument @docHandle   
RETURN 1 
retrive在SP ID中傳遞參數

Hopw you like this way

+0

XML很棒,但在這種情況下,儘量保持簡單。否則,你可能會遇到兩個問題。 – invert 2010-11-26 07:39:52

相關問題