[RESOLVIDO] java.sql.SQLException: ORA-01006: a variável de ligação não existe

1 resposta
T

Pessoal ve se alguem consegue encontrar esse erro, ja verifiquei a sintaxe, testei no banco na mao e funcionou blz o select, mas no java ta dando esse problema…

abaixo o select:

private static final String SQL_OBTER_USUARIO = "SELECT DISTINCT " +   
                        " U.COD_USUARIO," +
                        " DSC_LOGIN," +
                        " DSC_SENHA," +
                        " DSC_NOME," +
                        " DATA_CADASTRO," +
                        " BOL_ATIVO," +
                        " DATA_CONTRATACAO," + 
                        " DATA_DESLIGAMENTO," +
                        " FUNCAO " +
                    " FROM" +
                        " TBL_USUARIO U," +
                        " TBL_RE_USUARIO_PERFIL P" +
                    " WHERE" +
                        " U.COD_USUARIO = P.COD_USUARIO (+)" +
                    " AND" + 
                        " (U.COD_USUARIO = ? OR ? = 0 OR ? IS NULL) "+
                    " AND" +
                        " UPPER(DSC_LOGIN) LIKE UPPER('?')" +
                    " AND " +
                        " UPPER(DSC_NOME) LIKE UPPER('?')" +
                    " AND " +
                        " (UPPER(BOL_ATIVO) = UPPER(?) OR ? IS NULL) " +
                    " AND " + 
                        " (P.COD_PERFIL = ? OR ? = 0 OR ? IS NULL) "+
                    " ORDER BY " +
                        " DSC_NOME";

o metodo:

public List obterUsuario(Usuario usuario) {
        PreparedStatement ps = null;
        ResultSet rset = null; 
        Connection conn = null;
        List retorno = new ArrayList();
        if(usuario.getPerfil()==null){
            Perfil perfil = new Perfil(0,null);
            usuario.setPerfil(perfil);
        }
        
        
        
        try {
            conn = dataSource.getConnection();
            ps = conn.prepareStatement(SQL_OBTER_USUARIO);
                    
            ps.setInt(1,usuario.getCodUsuario()==null?0:usuario.getCodUsuario());
            ps.setInt(2, usuario.getCodUsuario()==null?0:usuario.getCodUsuario());
            ps.setInt(3, usuario.getCodUsuario()==null?0:usuario.getCodUsuario());
            ps.setString(4, Util.getStringLike(usuario.getDscLogin()));
            ps.setString(5, Util.getStringLike(usuario.getDscNome()));
            ps.setString(6, usuario.getBolAtivo());
            ps.setString(7, usuario.getBolAtivo());
            ps.setLong(8, usuario.getPerfil().getCodPerfil());
            ps.setLong(9, usuario.getPerfil().getCodPerfil());
            ps.setLong(10, usuario.getPerfil().getCodPerfil());
        
            rset = ps.executeQuery();               
            
            while (rset.next()) {
                Usuario usuarioBD = new Usuario(
                        rset.getInt("COD_USUARIO"),
                        rset.getString("DSC_LOGIN"),
                        rset.getString("DSC_SENHA"),
                        rset.getString("DSC_NOME"),
                        rset.getDate("DATA_CADASTRO"),
                        rset.getString("BOL_ATIVO"),
                        rset.getDate("DATA_CONTRATACAO"),
                		rset.getDate("DATA_DESLIGAMENTO"),
                		rset.getString("FUNCAO"));
                retorno.add(usuarioBD);
            }
            
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);            
        } finally {
            fechar(rset);
            fechar(ps);
            fechar(conn);
        }
        
        return retorno;
    }

Obrigado a todos!

1 Resposta

T

Consegui resolver.

obrigado.

Criado 12 de dezembro de 2008
Ultima resposta 12 de dez. de 2008
Respostas 1
Participantes 1