如果存储过程里有创建临时表,或者declare @t table()之类的,用stmt.executequery('exec procedurename')会出现"The statement did not return a result set."错误,大家是怎么解决的?谢谢

解决方案 »

  1.   

    boolean returnFlag = false;
    CallableStatement call = null;try
    {
        call = connection.CallableStatement("call procedureName(?)");
        // 存储过程的返回值,可以设置为1表示创建成功,0表示创建失败.
        call.registerOutParameter(1, OracleTypes.Number);
        call.execute();
        if (1 == call.getInt(1))
        {
            returnFlag = true;
        }
    }
    catch (SQLException e)
    {
    }
    finally
    {
        if (null != call)
        {
            call.close;
        }
    }return returnFlag;
      

  2.   

    call = connection.prepareCall("call procedureName(?)"); 
    不好意思刚写快了.
      

  3.   

    call = connection.prepareCall("{call procedureName(?)}"); 
      

  4.   


    Procedure 里面有返回纪录,
    call可以一条一条取出里面的纪录不?
      

  5.   

    executequery?说明这个存储过程根本无结果而言。
    conn.prepareCall    然后再executeUpdate;  如果有结果 用那个
      

  6.   

    这里的返回记录是指出参。一条一条的记录,说明你想要你的存储过程里面有一个出参是一个记录集,在SQL里面,也就是一个游标。你可以定义一个出参为游标,然后用JAVA代码把这个游标取出来,就相当于一个resultSet了贴部分代码供你参考:ps.registerOutParameter(1, OracleTypes.CURSOR);ps.execute();rs = (ResultSet)ps.getObject(1);