SELECT B.APPLINAME, r.GRADERULENAME, B.SEX,car.licenseno,  P.*   FROM CRM_SMS_SENDPOOL P   LEFT JOIN BASMEMBERINFO B ON B.MEMBERID = P.MEMBERID   LEFT JOIN BasGradeRule r ON r.graderuleid = b.OwnerGrade   inner JOIN bascarinfo car  ON p.carid = car.seqno   WHERE p.Status = 2 AND SYSDATE >= p.sendtime同样的一句SQL.
程序中JDBC执行后是48条.
PL/SQL中是45条.
晕死了.
连接都是指向同一个库(因为也只有一个库)SQL

解决方案 »

  1.   

    是不是刚 增/删/改了,  还没有commit吧,先commit一下,再来看看。
      

  2.   

    JDBC中没提交,PL/SQL中就只能查看提交前的数据,JDBC中commit。
      

  3.   

    直接连入sqlplus执行是几条? SYSDATE是取自系统当前时间、jdbc和pl/sql所在的系统时间有偏差?
      

  4.   

    commit了。
    换toad工具也是一样的
      

  5.   

    应该是没有commit原因导致pl/sql是提交前的数据,而JDBC是提交后的数据。
      

  6.   

    再新建一个表试试,往里面插入几条数据,然后 jdbc 和 pl/sql 工具 再执行一次看什么情况
      

  7.   

    在数据库中数据有修改一般都需要进行commit,亲身经历过,当初找了老半天才找出这个原因,因此记下了!
      

  8.   

    神兽哥好了.
    我把代码中的
    int a[] = pStmt.executeBatch();
    for (int i : a) {
    System.out.println(i);
    }改成pStmt.executeBatch();
    就好了
    很灵异
      

  9.   

    commit了.
    这边不管是否操作成功.都会再最后COMMITL
    finlly里进行释放资源和关闭连接
      

  10.   

    好了.
    修改了一个地方就好了.
    不知道为什么
    我把代码中的
    int a[] = pStmt.executeBatch();
    for (int i : a) {
    System.out.println(i);
    }改成pStmt.executeBatch();
    就好了
    很灵异
      

  11.   

    好了.
    修改了一个地方就好了.
    不知道为什么
    我把代码中的
    int a[] = pStmt.executeBatch();
    for (int i : a) {
    System.out.println(i);
    }改成pStmt.executeBatch();
    就好了
    很灵异
    java代码不太能看懂。。那也只能说明是你java里面逻辑有问题了。
      

  12.   

    神兽哥好了.
    我把代码中的
    int a[] = pStmt.executeBatch();
    for (int i : a) {
    System.out.println(i);
    }改成pStmt.executeBatch();
    就好了
    很灵异直接得出结果可以 那么在数组a[]获取返回的数据集后 先不显示数据  直接打印数组行数 就是48么?
      

  13.   

    神兽哥好了.
    我把代码中的
    int a[] = pStmt.executeBatch();
    for (int i : a) {
    System.out.println(i);
    }改成pStmt.executeBatch();
    就好了
    很灵异直接得出结果可以 那么在数组a[]获取返回的数据集后 先不显示数据  直接打印数组行数 就是48么?恩对.
      

  14.   

    神兽哥好了.
    我把代码中的
    int a[] = pStmt.executeBatch();
    for (int i : a) {
    System.out.println(i);
    }改成pStmt.executeBatch();
    就好了
    很灵异直接得出结果可以 那么在数组a[]获取返回的数据集后 先不显示数据  直接打印数组行数 就是48么?