Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jdbc我使用oracleplsql函数来检索结果集,它并没有提供java中的所有记录_Java_Oracle_Jdbc - Fatal编程技术网

使用jdbc我使用oracleplsql函数来检索结果集,它并没有提供java中的所有记录

使用jdbc我使用oracleplsql函数来检索结果集,它并没有提供java中的所有记录,java,oracle,jdbc,Java,Oracle,Jdbc,输出: rs码:19 问题:此代码返回的总行数比db中的行数少10行 如果50行以分贝表示,则显示40行,如果30行显示20行,如果9行显示0行。 您需要一种ResultSet(rs)类型:ResultSet.TYPE\u SCROLL\u Unsensitive 或者ResultSet。键入\u SCROLL\u SENSITIVE使其工作 通常从rs.beforeFirst()开始计算结果集,因此将第一个元素计算为 我的建议是在存储过程中进行SELECT计数(*) 您需要一种Result

输出: rs码:19

问题:此代码返回的总行数比db中的行数少10行 如果50行以分贝表示,则显示40行,如果30行显示20行,如果9行显示0行。

  • 您需要一种ResultSet(rs)类型:
    ResultSet.TYPE\u SCROLL\u Unsensitive
    或者
    ResultSet。键入\u SCROLL\u SENSITIVE
    使其工作
  • 通常从
    rs.beforeFirst()
    开始计算结果集,因此将第一个元素计算为

我的建议是在存储过程中进行SELECT计数(*)

  • 您需要一种ResultSet(rs)类型:
    ResultSet.TYPE\u SCROLL\u Unsensitive
    或者
    ResultSet。键入\u SCROLL\u SENSITIVE
    使其工作
  • 通常从
    rs.beforeFirst()
    开始计算结果集,因此将第一个元素计算为


我的建议是在存储过程中做一个SELECT COUNT(*)

发现问题时,是ojdbc jar问题,当时使用的是ojdbc6,现在已替换为ojdbc14。jar更改后工作正常,感谢大家的回复。

发现问题,是ojdbc jar问题,使用的是ojdbc6,现在已替换为ojdbc14。更改jar后,它工作正常,感谢大家的回复。

您的存储过程是否使用上述参数返回正确的结果?捕获异常而不进行处理是个坏主意。你能试着打印异常,以确保你的循环没有被中断吗?是的,伯杰,当我从TOAD或SQLDeveloper调用它时,它给了我正确的结果。我还有代码在catch block.WardC中处理异常,我有代码在catch block中处理异常,循环运行良好。每次只删除10行。您的存储过程是否使用上述参数返回正确的结果?捕获异常而不处理异常是个坏主意。你能试着打印异常,以确保你的循环没有被中断吗?是的,伯杰,当我从TOAD或SQLDeveloper调用它时,它给了我正确的结果。我还有代码在catch block.WardC中处理异常,我有代码在catch block中处理异常,循环运行良好。每次只删除10行。嗨,Cassian,感谢您的快速回复,我如何才能获得
ResultSet.TYPE\u SCROLL\u不敏感或ResultSet.TYPE\u SCROLL\u敏感
int size=0<代码>如果(rs!=null){rs.beforeFirst();rs.last();size=rs.getRow();}给出异常。另外,我添加了count(*),它给了我正确的计数。下面是异常。
rs.beforeFirst()
java.sql.SQLException:仅转发结果的操作无效set:beforefirfirstreplace行5:stmt=conn.prepareCall(sql);使用stmt=conn.prepareCall(sql,ResultSet.TYPE\u SCROLL\u不敏感,ResultSet.CONCUR\u只读)也可以检查此链接Hi Cassian,感谢您的快速回复,我如何获得
ResultSet.TYPE\u SCROLL\u不敏感或ResultSet.TYPE\u SCROLL\u敏感
int size=0<代码>如果(rs!=null){rs.beforeFirst();rs.last();size=rs.getRow();}给出异常。另外,我添加了count(*),它给了我正确的计数。下面是异常。
rs.beforeFirst()
java.sql.SQLException:仅转发结果的操作无效set:beforefirfirstreplace行5:stmt=conn.prepareCall(sql);使用stmt=conn.prepareCall(sql,ResultSet.TYPE\u SCROLL\u ResultSet.CONCUR\u READ\u不敏感),也可以检查此链接
    CallableStatement stmt = null;
    String sql = "begin ? := TEST.USER_LIST.queryByUser(?,?,?,?); end;";
    ResultSet rs = null;
    try {
        stmt = conn.prepareCall(sql);
        stmt.registerOutParameter(1, OracleTypes.CURSOR);
        stmt.setString(2, "user1");  stmt.setInt(3, 1); // offset
        stmt.setString(4, "Update_Date");  stmt.setString(5, "DESC");
        stmt.execute();
        if(stmt.getObject(1)==null) {
            System.out.println("Null value");
        } else {
            rs = (ResultSet) stmt.getObject(1);
            int i = 0;
             while (rs.next()) {     i++;    }
             System.out.println("rs size: " +i);
            stmt.close();
            rs.close();
        }
    } catch (Exception ex) {
    } finally {
        try { rs.close(); stmt.close();
        } catch (Exception ex) {}
    }
int size = 0 ;
if (rs != null){  
    rs.beforeFirst();  
    rs.last();  
    size = rs.getRow();
}