我写的静态SQL是: 
SELECT   *   FROM   MyTable   WHERE   MY_ID   =   :id   AND   (:name   is   NULL   OR   MY_NAME   =   :name) 
其中带:的变量是我传过来的参数,实现动态判断的是这一句:(:name   is   NULL   OR   MY_NAME   =   :name) 
即如果变量name是null值的话查询条件MY_NAME   =   :name 就忽略 
我在oracle中可以正确运行这个SQL,但是在DB2中报错:"sql语句包含无效参数标记的使用" 请问DB2有什么静态SQL语句实现这样查询条件动态判断? 

解决方案 »

  1.   


    String sql = "SELECT * FROM MyTable WHERE MY_ID = ? AND (? is NULL OR MY_NAME = ?)";
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setObject(id);
    pstmt.setObject(name);
    pstmt.setObject(name);
      

  2.   

    上面忘记写index了。pstmt.setObject(1,id);
    pstmt.setObject(2,name);
    pstmt.setObject(3,name);
      

  3.   

    to 爱上猫的鱼:
    你的SQL我试过了,报错:“语句包含无效参数标记的使用”
      

  4.   

    实在不行
    有二个办法
    用createStatement
    SQL语句已经处理过参数了的
    另一种是
    用上if语句
    在java里先判断你的参数是不是null
    如果是null...
    如果不是null...