存储过程IF里面能执行where吗? SELECT 
 M_HINBAN.HNBAN
,M_HINBAN.NENDO
,M_HINBAN.SEASON
,M_HINBAN.ITEM

                    FROM
M_HINBAN  LEFT JOIN M_SHOHIN 
                            ON M_HINBAN.HNBAN = M_SHOHIN.HNBAN IF @NHBAN_F IS NOT NULL 
AND @NHBAN_T IS NOT NULL  BEGIN  WHERE M_HINBAN.HNBAN > = @NHBAN_F
AND   M_HINBAN.HNBAN < = @NHBAN_T END

解决方案 »

  1.   

     SELECT 
                                 M_HINBAN.HNBAN
                                ,M_HINBAN.NENDO
                                ,M_HINBAN.SEASON
                                ,M_HINBAN.ITEM
                                
                        FROM
                    M_HINBAN  LEFT JOIN M_SHOHIN 
                                ON M_HINBAN.HNBAN = M_SHOHIN.HNBAN
                                
               WHERE M_HINBAN.HNBAN > = isnull(@NHBAN_F,M_HINBAN.HNBAN)
                    AND   M_HINBAN.HNBAN < = isnull(@NHBAN_T,M_HINBAN.HNBAN)
      

  2.   

    你应该确认你那个begin  end 块中要干什么,光是一个 where 子句并不能实现一个完整的操作,语法上也是错的。
      

  3.   


    我在想if中判断条件为空就跳过
    执行之后的语句
    最后形成一个完整的 sql语句
      

  4.   

    where语句接着上面的 from之后啊
      

  5.   

    弱弱的问一下怎么写用if判断条件最后形成完整的sql语句
      

  6.   

    怎么拼接 
    我想用if语句吧 符合条件的加上 where语句
    不符合条件就滤过