我有一个很长的存储过程,我想对过程进行一些细微的修改而不必创建一个新的(用于维护目的)。是否有可能在sql语句中使用IF或CASE
是否可以在select语句的FROM语句中使用IF或CASE来加入其他表?
像这样:
from tableA a
join tableB b a.indexed = c.indexed
IF @Param='Y'
BEGIN
join tableC c a.indexed = c.indexed
END
这似乎并没有为我工作。但我想知道这是否甚至是可能的和/或如果这甚至是有意义的。
谢谢。
你可以在一个语句中使用'CASE',因为它是一个表达式导致一个值。可能会被强迫让一个'OUTER JOIN'以各种方式表现出来。使用简单的'IF'来调用两个'SELECT INTO'语句中的一个,然后在存储过程的余额中使用生成的临时表可能会更好。 – HABO 2012-03-23 16:20:40
'CASE'语句可以返回**值**作为比较或条件 - 但它不能**返回要执行的SQL的片段。 – 2012-03-23 16:58:52