//首先要执行这两个过程
stmt = conn.prepareStatement("{call set_view_time.set_beg_value("+bdate+")}");
stmt.execute();

stmt = conn.prepareStatement("{call set_view_time.set_beg_value("+edate+")}");
stmt.execute();
//过程执行后在查询表数据
stmt = conn.prepareStatement(buff.toString());
rs = stmt.executeQuery();以上SQL与过程pl/sql中好使.用java调用不报错,但查询不出来数据.
需要先执行过程然后表里才有数据.但我这种写法不好使.
求高人...

解决方案 »

  1.   

    public class TestProcedureOne {  public TestProcedureOne() {  }  public static void main(String[] args ){    String driver = "oracle.jdbc.driver.OracleDriver";    String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq ";    Statement stmt = null;    ResultSet rs = null;    Connection conn = null;    CallableStatement cstmt = null;     try {      Class.forName(driver);      conn =  DriverManager.getConnection(strUrl, " hyq ", " hyq ");      CallableStatement proc = null;      proc = conn.prepareCall("{ call HYQ.TESTA(?,?) }");      proc.setString(1, "100");      proc.setString(2, "TestOne");      proc.execute();    }    catch (SQLException ex2) {      ex2.printStackTrace();    }    catch (Exception ex2) {      ex2.printStackTrace();    }    finally{      try {        if(rs != null){          rs.close();          if(stmt!=null){            stmt.close();          }          if(conn!=null){            conn.close();          }        }      }      catch (SQLException ex1) {      }    }  }}这是java调用存储过程,lz可以试试。
      

  2.   

    public class TestProcedureTHREE {
    public TestProcedureTHREE() {
    }
    public static void main(String[] args ){
        String driver = "oracle.jdbc.driver.OracleDriver";
        String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
        Statement stmt = null;
        ResultSet rs = null;
        Connection conn = null;    try {
          Class.forName(driver);
          conn = DriverManager.getConnection(strUrl, "hyq", "hyq");      CallableStatement proc = null;
          proc = conn.prepareCall("{ call hyq.testc(?) }");
          proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
          proc.execute();
          rs = (ResultSet)proc.getObject(1);      while(rs.next())
          {
              System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");
          }
        }
        catch (SQLException ex2) {
          ex2.printStackTrace();
        }
        catch (Exception ex2) {
          ex2.printStackTrace();
        }
        finally{
          try {
            if(rs != null){
              rs.close();
              if(stmt!=null){
                stmt.close();
              }
              if(conn!=null){
                conn.close();
              }
            }
          }
          catch (SQLException ex1) {
          }
        }
    }
    }调用存储过程,返回游标值。
      

  3.   

    你这些代码在java中是一个connection的事务,这个事务还没commit,当然中途查不出来,否则不就是数据库里的“脏读”了吗?
    实在是要解决这个问题,把数据库的隔离级别调低,允许“脏读”