Galera blz,
Seguinte, eu tenho uma tabela no Oracle 8i e preciso fazer uma consulta nela trazendo os nomes em ordem decrescente, até ae tudo bem, tô usando o driver mais recente 1.4, só que ao executá-la dá o seguinte erro:
java.sql.SQLException: ORA-01467: chave de classificação extensa demais
Bom descobri que isso ocorre justatamente porque estou usando DESC na consulta, que é a seguinte:
SELECT EMPRESA FROM EMPRESA ORDER BY EMPRESA DESC
O erro só ocorre se algum registro do campo no qual estou usando DESC estiver gastando mais da metade do seu tamanho reservado, no caso o meu campo EMPRESA é um VARCHAR2(40), se algum registro de EMPRESA tiver caracteres >= 21 dá erro, quando menor que isso traz a consulta certinha. Usando a consulta sem o DESC traz normal independente do tamanho.
Já tentei com outras tabelas e campos e o erro ocorre da mesma forma sempre pelo mesmo motivo, esse problema não ocorre quando acesso SQL Server (com outro driver claro
), inclusive quando faço a mesma consulta para Oracle usando Delphi funciona normal também, só me restou a conclusão de erro no JDBC do Oracle, para este caso com DESC, alguém já encontrou um erro parecido ??
Abaixo segue um programinha de teste que fiz e a tabela usada:
CREATE TABLE Empresa
(
Codigo_Identificacao NUMBER(5),
Empresa VARCHAR2(40),
);
import java.sql.*;
public class desc
{
public desc()
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@<ip_server>:<porta>:<banco>", "<usuario>", "<senha>");
PreparedStatement prepStmnt = connection.prepareStatement("SELECT EMPRESA FROM EMPRESA ORDER BY EMPRESA DESC");
ResultSet resultSet = prepStmnt.executeQuery();
System.out.println("OK");
}
catch (SQLException sqlEx)
{
System.out.println("Erro SQL: " + sqlEx.toString());
}
catch (ClassNotFoundException classEx)
{
System.out.println("Erro Class: " + classEx.toString());
}
}
public static void main(String[] args)
{
desc teste = new desc();
}
}
Obrigado pela atenção,