在SQL Server中将参数传递给存储过程的有效方法是什么?
实际上我的参数值包含一些像
这样的东西 @empids = '1,2,3,4,5,6,7,8,9'
这样的事情高达1000
所以我尝试将1000个以逗号分隔的值传递给单个参数,并且工作正常。
但除此之外还有其他最佳解决方案吗?
谢谢
答案 0 :(得分:2)
答案 1 :(得分: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);
您可以使用以下方式在sp中检索id
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
你喜欢这样的方式