如何从代码后面将int值列表传递给SP?

时间:2011-12-21 10:19:34

标签: c# stored-procedures

我有一个int的列表,因为我现在得到了一些值我希望将所有值一个接一个地传递给我的存储过程或以逗号分隔,

代码背后:

Cmd.Parameters.AddWithValue("@ImageId", IDList); //IDList is list of int which need to pass in my SP
SP中的

@ImageId int //declaration

IF Not Exists(SELECT ImgIns.Id FROM ImgIns WHERE ImgIns.ImageId =@ImageId)

3 个答案:

答案 0 :(得分:1)

将它们传递给逗号分隔的字符串并将其拆分为t-sql是我到目前为止找到的最佳选择。

Split function equivalent in T-SQL?将有助于拆分操作。

代码背后:

var IDList = String.Join(",", new List<int> {1,2,3});
Cmd.Parameters.AddWithValue("@ImageIds", IDList);

答案 1 :(得分:0)

创建一个sql函数来拆分逗号分隔的列表int http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=50648将此列表插入到某个表varibale中然后你可以像你的那样使用

DECLARE @ImageIDs TABLE (ImageID INT)

INSERT INTO @ImageIDs 从dbo.fn_Split(@ImageID)中选择*

IF EXISTS(从ImageINstance中选择1我内部加入@ImageIDs Img ON I.ImageID = Img.ImageID)

答案 2 :(得分:0)

现在我在for循环的帮助下逐个传递值,它对我来说很好..

 for (int i = 0; i < IDList.Count; i++)
 {
    Cmd.Parameters.Clear();
    Cmd.Parameters.AddWithValue("@ImageId", IDList[i]);
 }