存储过程中的内联条件语句

时间:2010-04-06 20:57:21

标签: sql-server-2005 tsql stored-procedures conditional case

以下是我的代码中的内联查询的伪代码:

select columnOne
from myTable
where columnOne = '#variableOne#'
  if len(variableTwo) gt 0
      and columnTwo = '#variableTwo#'
  end

我想将其移至存储过程中,但无法正确构建查询。我认为它会像

select columnOne
from myTable
where columnOne = @variableOne
  CASE
    WHEN len(@variableTwo) <> 0 THEN and columnTwo = @variableTwo
  END

这给了我一个语法错误。

有人能告诉我我的错误。

另外,我想将它保留为只有一个查询而不只是一个if语句。另外,我不想在存储过程中构建sql并在其上运行Exec()

1 个答案:

答案 0 :(得分:4)

切换你的逻辑,你就可以得到你想要的结果。

select columnOne
from myTable
where columnOne = @variableOne
and (len(@variableTwo) = 0 or columnTwo = @variableTwo)