我数据库里的是char类型的字段
但是实际程序里的是varchar类型!也就是设置的变量。
我把生成的SQL直接运行在,ORACLE10G里,一点问题也没有!
但是,程序里却读不出来!
如果直接设置变量就没有问题!
谁知道原因!请指教!
例:SELECT * FROM PERSON WHERE ID='变量'     这样是可以的
    
    SELECT * FROM PERSON WHERE ID=?
    STMT.SETSTRING(变量);                    这样就查询不出来了

解决方案 »

  1.   

    varchar是可变类型,char不是,当你录入数据不满足你定义的长度时它补空格,所以你查询的时候要对这个字段使用trim去空格
      

  2.   

    where trim(id)=?
    或where id=rpad(?,10)直接用WHERE ID='变量'
    可以理解为'变量'会转成ID的char型,有些类似隐式类型转换
      

  3.   

    不知楼主的问题解决了吗?我也碰到了类似的问题,你的表中的ID是什么数据类型,char吗?
    也是用OCI来实现的吗?
    我发现用SQLT_STR绑定可以成功,
    但SQLT_CHR不能成功得到结果。