Ola ,

Galera estou com um problema que provavelmente eh comum mas nao achei nada na net. Eh 
o seguinte :

Tenho uma estrutura de programacao onde tenho varios Beans e cada metodo desses beans 
chamam uma procedure que devolve um resultado, ate ai normal e comum. O problema eh 
que para chamar essas procedures eu uso o comando Connection.prepareCall(<Chamada da 
Package>), depois dou um execute e logo apos o close. Ai vem o problema
Ao executar o prepareCall o JDBC cria um cursor aberto no oracle e ao dar o execute 
ele cria um segundo e quando chamo o Close o JDBC somente fecha o segundo, o primeiro 
fica aberto e so fecha quando o objeto Connection e destruido. Eu ja fiz varios testes 
com o oracle e outras linguagens (Delphi | PowerBuilder | Forms) e isso nao aconteceu, 
portanto acho que eh um problema do JDBC se alguem tiver alguma ideia ou dica ... por 
favor mander para mim.

Obrigado,

Ex.: de metodo
*********************************************************************************
ctmQuery  e conConnectionDB sao privados do objeto
*********************************************************************************

  public String getRoleName(String pstrLDAPName)throws OFSWebException {

    String  strCommand         = null;
    int     intErrorCode       = 0;
    String  strErrorDesc       = null;
    String  strOrder           = null;
    String  strRoleName        = null;

    try {
      strCommand = "{call KOF_OF_RO.POF_OF_ROSelRoleName(?,?,?,?)}";

      ctmQuery = conConnectionDB.prepareCall(strCommand);

      // Registering input parameters
      ctmQuery.setString(1,pstrLDAPName);

      // Registering output parameters
      ctmQuery.registerOutParameter(2,OracleTypes.NUMBER);  // Oracle error code
      ctmQuery.registerOutParameter(3,OracleTypes.VARCHAR); // Oracle error description
      ctmQuery.registerOutParameter(4,OracleTypes.VARCHAR); // Role Name

      // Execute stored procedure and get the resultset
      ctmQuery.execute();
      intErrorCode = ctmQuery.getInt(2);
      strErrorDesc = ctmQuery.getString(3);
      strRoleName  = ctmQuery.getString(4);

      ctmQuery.close();

      if (intErrorCode != 0) {
        throw new OFSWebException(intErrorCode,strErrorDesc);
      }
    }
    catch (OFSWebException excOFS) {
      throw new OFSWebException(excOFS.getErrorCode(), excOFS.getMessage());
    }
    catch (SQLException excSQL) {
      StringWriter stwError = new StringWriter();
      excSQL.printStackTrace( new PrintWriter(stwError));
      throw new OFSWebException(intErrorCode, stwError.toString());
    }
    catch (Exception excOther) {
      StringWriter stwError = new StringWriter();
      excOther.printStackTrace( new PrintWriter(stwError));
      throw new OFSWebException(iConstants.EXCEPTION_ERROR_CODE, stwError.toString());
    }
    return  strRoleName;
  }

*********************************************************************************
<><><><><><><><><><><><><><><><><><>
[]'s 
Mike Moreira 
CPA Sistemas de Informação 
+55.11.4330-6066
[EMAIL PROTECTED]
<><><><><><><><><><><><><><><><><><> 


------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Responder a