如何在一个sql参数中传递几个整数值?

时间:2013-10-17 15:15:43

标签: vb.net ado.net

我的存储过程符合以下条件:

WHERE (Transaction_tbl.dtime BETWEEN @fromDate AND @toDate)   
  AND (Location_tbl.Locid IN (@locations))

我有一个ListBox,用于填充@locations参数(一个整数),以及两个DateTimePicker控件,用于@fromDate@toDate

我的列表框值如下:

cnt = LSTlocations.SelectedItems.Count
        Dim list As New List(Of Integer)
        Dim locid As Integer
        If cnt > 0 Then
            For i = 0 To cnt - 1
                Dim locationanme As String = LSTlocations.SelectedItems(i).ToString
                locid = RecordID("Locid", "Location_tbl", "LocName", locationanme)
                list.Add(locid)
            Next
        End If
  

我想将此列表项值传递给我的存储过程...我怎么能   这样做?

cmd23.Parameters.Add("@startDate", SqlDbType.NVarChar, 50, ParameterDirection.Input).Value= startdate
cmd23.Parameters.Add("@endDate", SqlDbType.NVarChar, 50, ParameterDirection.Input).Value = enddate
cmd23.Parameters.Add("@locations", SqlDbType.Int) ' <= ???

如何修改此代码以将多个整数标识符作为@locations参数传递,以便我可以在列表框中选择多个项目?

1 个答案:

答案 0 :(得分:0)

将您的位置参数更改为字符串。

选择项目 INTO #locations 来自dbo.split(@locations,',')

您可以在此处找到拆分功能:Split string by comma in SQL Server 2008

您必须更改查询以加入#locations临时表。

然后从你的VB传递来自LSTlocations的所有选定项目的逗号分隔字符串

类似的东西:

[String] .Join(“,”,LSTlocations.Items.Cast(Of ListItem)()。Where(Function(i)i.Selected)。[Select](Function(i)i.Value)。ToArray ())