ResultSet rset = stmt.execute(sql);

解决方案 »

  1.   

    ResultSet rset = stmt.executeUpdate(sql);不知道是不是!
    又没有错误信息
      

  2.   

    谢谢,刚才那个能执行了,但是下面这个还是不行,不知道为什么    try {
          Statement stmt = database1.createStatement();
          String sql = new String("");
          sql = "exec stp_inquire_user_information";
          stmt.execute(sql);
          System.out.print("ok2   ");     }
        catch (SQLException e1) {
          System.out.print("error  ");
        }两个没什么区别呀~
      

  3.   

    java.sql.SQLException: [Oracle][ODBC]Syntax error or access violation.
      

  4.   

    在sql plus中执行就没有问题呀
      

  5.   

    当前登录到Oracle的用户有没有grant权限?
      

  6.   

    stp_inquire_user_information当前Oracle数据库中是否这个存储过程或函数?
      

  7.   

    有呀,我的程序原本是:    try {
          Statement stmt = database1.createStatement();
          String sql = "grant  CREATE TABLE TO barry" ;//给下面的存储过程添加权限
          stmt.execute(sql);
          System.out.print("ok1   ");
         }
        catch (SQLException e1) {
          System.out.print("error1   ");
        }    try {
          Statement stmt = database1.createStatement();
          String sql2 = "exec barry.stp;";
          stmt.execute(sql2);
          System.out.print("ok2   ");//     }
        catch (SQLException e1) {
          System.out.print(e1);
        }运行输出:
    ok1   java.sql.SQLException: [Oracle][ODBC]Syntax error or access violation.
    可见付权限的已经执行了,因为输出了一个ok1
    但是执行存储过程的有问题。其中 exec barry.stp在sql plus 中是没有问题的
      

  8.   

    stp_inquire_user_information 当然有的啦我有写了一个最简单的存储过程stp在当前库中,还是不行。代码就在上面的例子里。
      

  9.   

    楼主的意思是:要在java中调用Oracle的存储过程或函数?
      

  10.   

    java中调用存储过程是用CallableStatement 来完成。到网上去搜索,有很多例子。简单代码如下,详细参数说明还是到网上去参考!!
    CallableStatement callFunction = connection.prepareCall(
    "{ ? = call stp_inquire_user_information(?,?,?,?) }");// register the out parameter
    callFunction.registerOutParameter(1,OracleTypes.INTEGER);
    callFunction.setString(2,"1234567890123456");
    callFunction.setString(3,"200406");
    callFunction.setString(4,"parameter3");
    callFunction.setString(5,"parameter4");// execute the function and return the result
    callFunction.execute();
    int sbResult = callFunction.getInt(1);
    System.out.println("处理结果:"+sbResult);
    Array outputArray = null;
    String[] surnames = null;
    ...
    callFunction.close();
      

  11.   

    再问一下,如果要stp_inquire_user_information 即存储过程名,用一个变量替代应该如何完成呢?