java.sql.SQLException: ORA-01000: 超出打开游标的最大数
ORA-06512: 在"DBO.SP_SYSUSER_LOGIN", line 26
ORA-01000: 超出打开游标的最大数
ORA-06512: 在line 1DBO.SP_SYSUSER_LOGIN 过程如下:CREATE OR REPLACE PROCEDURE sp_SysUser_Login(
    Result OUT INTEGER,
    v_UserCode VARCHAR2,
    v_Password VARCHAR2
    )
AS
    rowcnt INTEGER;
BEGIN
    SELECT COUNT(*) INTO rowcnt FROM vw_sysuser WHERE code = v_UserCode;
    IF rowcnt = 0 THEN
        rollback work;
        Result := -10301; ---不存在此用户
        RETURN;
    END IF;
    SELECT COUNT(*) INTO rowcnt FROM vw_sysuser WHERE code = v_usercode AND password = v_password;
    IF rowcnt = 0 THEN
        rollback work;
        Result := -10302; ---用户密码不对
        RETURN;
    END IF;
    Result := 0;
    commit work;
  Exception
   When Others Then
     result := -19999;
     Rollback work;END sp_SysUser_Login;

解决方案 »

  1.   

    try
        {
          CallableStatement call = conn.prepareCall(
              "{call sp_SysUser_login(?,?,?)}");
          call.registerOutParameter(1, OracleTypes.INTEGER);
          //1 Result OUT INTEGER
          call.setString(2, Code);
          //2 v_UserCode VARCHAR2,
          call.setString(3, password);
          //3 v_Password VARCHAR2
          call.execute();
          ret = call.getInt(1);
          return ret;
        }
        catch (Exception e)
        {
          e.printStackTrace();
          return -20001;
        }
        finally
        {
          close();
        }
      

  2.   

    CallableStatement call  没有关闭,所以有这个问题
      

  3.   

    我也遇到过(java.sql.SQLException: ORA-01000: 超出打开游标的最大数)这个问题!
    connection要随时关掉,connection不要作为参数传,或许可以解决超出打开游标的最大数这个问题!
      

  4.   

    也可以通过修改数据库的打开游标数来解决
    修改INIT<SID>.ORA文件,加上   OPEN_CURSORS=10000
    启动数据库,当然你打开的游标用完后要及时关闭
      

  5.   

    Result OUT INTEGER 换成number试试。
      

  6.   

    呵呵,你的init.ora中定义了多少可以同时打开的游标数,
    上边那哥们让你设置城10000。别听他的,我不知道他们在什么系统上玩,在我这里IBMp670
    6CPU10G内存都没敢开那么大,疯了
    不过他说的打开后要关闭是真的,另外注意尽量避免嵌套游标循环
      

  7.   

    yhdlong(东东)会吃掉你的内存??我的128M打开20000还爽,只不过是一个解决问题的方法,关键还是代码。
      

  8.   

    yhdlong(东东)会吃掉你的内存??我的128M打开20000还爽,只不过是一个解决问题的方法,关键还是代码。第一、
    不知道你的机器配置,128M是服务器吗?
    第二、
    不知道你是几个客户端连上来的,还是在自己机器上玩的,
    第三、
    你在你128M的机器上装9i?厉害,厉害,回头我试一下在286上看能不能装