2016-02-04 39 views
0

我有一個商店編得到部門在複選框組中選中。當我傳遞一個值它的工作,但是當我通過2個以上部門是不是在我的代碼workiing在聲明不工作的價值通過參數

在商店PROG

CREATE PROCEDURE [dbo].[REPORT] 
    @dept nvarchar(max)=null 
AS 
set @dept=left(@dept,len(@dept)-1) 
select * from department where deptid in(@dept) 

背後

string dept = ""; 
foreach (ListItem item in CheckBoxList1.Items) 
{ 
    if(item.Selected) 
    { 
     dept+="'"+item.Value.ToString()+"',"; 
    } 
} 
... 
... 
... 
cmd.Parameters.AddWithValue("@dept", dept); 
using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) 
{ 
    sda.Fill(dt); 
    gvdata.datasource=dt; 
    gvdata.bind(); 
} 
+0

您是否在@dept參數中存儲用逗號分隔的值? – sagi

+0

爲了這個工作,你需要把你的sql變成一個字符串並執行它。否則,你不能那樣做。 –

+0

是我使用逗號分隔值 – Vic

回答

0

的一種方法是使你的查詢變成「動態」的sql(執行一個sql字符串);這應該工作:

SET @dept=left(@dept,len(@dept)-1) 
exec('select * from department where deptid in(' + @dept + ')'); 

雖然做動態SQL時注意注入攻擊。