代码之家  ›  专栏  ›  技术社区  ›  Jason

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

  •  1
  • Jason  · 技术社区  · 14 年前

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

    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 回复  |  直到 14 年前
        1
  •  4
  •   roufamatic    14 年前

    打开你的逻辑,你就能得到你想要的结果。

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