SQL da oracle retorna erro Oracle-00911

galera!

tenho um problema!

select 
      item_guia.gui_numero, item_guia.gui_sequencia, item_guia.gui_situacao, item_guia.pre_codigo_prest_exec, item_guia.gui_fun_inc_nota, item_guia.pro_codigo,
      item_glosa_pagamento.ppg_protocolo, item_glosa_pagamento.itg_dt_apresent, item_glosa_pagamento.itg_prev_pagam 
from 
      item_guia, item_glosa_pagamento, guia_servico
where 
      item_glosa_pagamento.gui_numero = item_guia.gui_numero
      and item_glosa_pagamento.gui_sequencia = item_guia.gui_sequencia
      and item_glosa_pagamento.pro_codigo = item_guia.pro_codigo
      and item_glosa_pagamento.pro_tipo_procedimento = item_guia.pro_tipo_procedimento
      and guia_servico.gui_numero = item_guia.gui_numero
      and item_guia.gui_status = 'N'
      and item_guia.gui_situacao = 'AB'
      and item_guia.gui_ano_comp_pag = 2009
      and item_guia.gui_mes_comp_pag = 6
      and item_guia.gui_emergencia is not null
      and item_guia.gui_pagto = 'S' 
      and guia_servico.gui_intercambio = 'N'
order by item_guia.gui_fun_inc_nota;

esse sql não executa no java!!!

usando o Query Reporter ele funfa normal… o erro que ele retorna pelo exception é ORA-00911 “invalid caracter”

eu já refiz a query… já tentei gerar ela pelo query builder… mas nada! nenhum funcionou!!!

o banco eh o oracle 10g… segue abaixo minha classe de conexão:

package principal;

import java.sql.*;
import javax.swing.*;

public class BancoDados {

    public static Connection Con;
    public static Statement Stm;
    public static ResultSet Rs;

    private void abreConexao(){

        String Driver = "oracle.jdbc.OracleDriver";
        String URL = "jdbc:oracle:thin:@//#IP do BD#:#porta#/#banco#";
        String USER = "#user#";
        String SENHA = "#senha#";

        try{
            Class.forName(Driver);

            Con = DriverManager.getConnection(URL, USER, SENHA);
            //JOptionPane.showMessageDialog(null,"Conectado com o Banco!",".:: scriptFast ::.",JOptionPane.INFORMATION_MESSAGE);
        }
        catch(SQLException Erro){
            JOptionPane.showMessageDialog(null,"Erro de Conexão com o Banco! Descrição do erro:\n"+Erro,".:: Erro - scriptFast ::.",JOptionPane.ERROR_MESSAGE);
        }
        catch (ClassNotFoundException Erro){
            JOptionPane.showMessageDialog(null,"Classe da conexão não encontrada! Erro:\n"+Erro,".:: Erro - scriptFast ::.",JOptionPane.ERROR_MESSAGE);
        }
    }

    private void fechaConexao(){

        try{
            Con.close();
            Stm.close();
            //JOptionPane.showMessageDialog(null,"Conexão Terminada!",".:: scriptFast ::.",JOptionPane.INFORMATION_MESSAGE);
        }
        catch(SQLException Fechar){
            JOptionPane.showMessageDialog(null,"Erro ao Fechar conexão com o BD. Descrição do erro:\n"+Fechar,".:: Erro - scriptFast ::.",JOptionPane.ERROR_MESSAGE);
        }
    }

    public void conecta(){
        abreConexao();
    }

    public void fecha(){
        fechaConexao();
    }
}

só lembrando, ele conecta no BD, mas não executaa query… o comando que to usando pra executa ela é

valeu quem puder ajudar!

Já tentou colocar um ‘S’ em vez de ‘S’ ???
Java é chato com quotes

Como você colocou a sua query no Java, era isso que interessava mais, bom, de qualquer forma uma outra maneira é usar PreparedStatement, assim você não fica se preocupando em escapar caracteres

String sql = "select * from usuario where usuario_id = ? and ativo = ?";
PreparedStatement ps = connection.preparedStatement(sql);
ps.setInt(1, 2);
ps.setString(2, String.valueOf('S'));

cara

esse PreparedStatement, ele é como se fosse o executequery??

nao intendi seu código ali…

o setInt(1,2); define dois inteiros certo?

e ni setString(2, String.ValueOf(‘S’));

define que o 2 vale S??

seria isso?

O PreparedStatement é uma query pre-compilada, ao invés de você passar os valores você passa bind (?) depois faz as substituições desses binds pelos valores propriamente dito!

Para saber mais leia:
http://java.sun.com/j2se/1.5.0/docs/api/java/sql/PreparedStatement.html

http://java.sun.com/j2se/1.5.0/docs/api/java/sql/PreparedStatement.html#setInt(int, int)

http://java.sun.com/j2se/1.5.0/docs/api/java/sql/PreparedStatement.html#setString(int, java.lang.String)

a query intera ta saindo assim:

tipo, se eu der um system.out.println na string SQL ta saindo assim, a principio ta certo!

pq o query builder ta fazendo ela!

só o java q num quer executa!