如何将多个值传递给存储过程

我有一个带有下拉数据validation框的Excel工作表,用户可以从整数值列表中select以确定部门或单词“ALL”以获取所有部门。 我使用SQL将该单元格的值传递给存储过程。 在SQL中,我有WHERE Department=@Dept

如果我只允许一个部门select,这项工作很好,但我也想允许所有部门。

关于如何做这个工作有什么想法吗? IN运算符还是其他的一些技巧?

使用CASE语句,如果它是“ALL”,则可以传回部门字段。 如果还有其他的东西通过你发送的价值:

 Where Department = CASE @input WHEN 'ALL' Then Department ELSE @input END 

这里存储脚本的两个解决scheme:

  1. 把一个if语句,那么你将不得不一套查询。
  2. 在标准中添加一个iif / case语句。

如果用户select“ALL”,则可以将参数设置为NULL:

 select * from table1 WHERE Department=isnull(@Dept,Department) 

@Dept值为NULL时,查询将是:

 select * from table1 WHERE Department=Department 

就像1=1