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

时间:2017-03-29 21:34:56

标签: sql sql-server excel stored-procedures

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

如果我只允许一个部门选择,这很好,但我也想允许所有部门。

对于如何使这项工作有任何想法吗?使用IN运算符或其他什么需要某种技巧吗?

3 个答案:

答案 0 :(得分:1)

存储脚本中的两个解决方案:

  1. 发出if声明,然后您将需要查询。
  2. 在条件中添加iif / case声明。

答案 1 :(得分:1)

如果您的用户选择“ALL”,您可以将参数设置为NULL:

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

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

select * from table1 WHERE Department=Department

就像1=1

答案 2 :(得分:1)

使用CASE声明,如果它是"全部"你可以传回部门字段。如果其他任何内容都传递了您发送的值:

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