2010-11-26 73 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