none
Erro Oracle RRS feed

  • Pergunta

  • Pessoal estou com um baita problema em uma aplicação usando VS2008 C# com Banco de Dados Oracle 10g tenho uma query SQL a qual roda certinho no editor de querys exucutando normalmente mas quando usada no programa C# esse gera um erro que se refere ao tamanho em caracteres do nome de um campo ex: um nome de tabela pode conter no maximo 30 caracteres, meus campos em nenhum momento tem um tamanho desses, o erro que esta me retornando é o seguinte:
    -->> ORA-00972: Identifier is too long
    Estou gerando a query e carregando uma gridview com os dados usando um DataSet e um DataAdapter na linha onde executo o dataadapter o programa gera o erro, alem disso ja fiz um teste executando um command com um datareader e também gera erro ... sera que o .Net tem alguma limitação ou algum problema ???

    Minha query contem subquerys onde crio colunas sera que existe alguma limitação creio que não né

    O pior que é fiz um teste usando Delphi e a aplicação funciona perfeitamente.

     

     


    Junior
    quarta-feira, 11 de agosto de 2010 19:22

Respostas

  • Ola

    Usei a seguinte string de conexão (Provider=msdaora;Data Source=db;User Id=us;Password=pw;)

    E funcionou pelo para essa situação da query com as subquerys ficou OK

    Valeu e obrigado pela ajuda.

    Abs.


    Junior
    quinta-feira, 12 de agosto de 2010 20:45

Todas as Respostas

  • Junior,

    Pelo que eu vi, existe um limite de 30 caracteres para nome de identificadores no Oracle.

    Você colocou um alias para todas as suas subqueries?

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    quarta-feira, 11 de agosto de 2010 19:31
    Moderador
  • Ola

    Sim eu coloquei um alias para cada subquery sim ... o pior é que no editor de querys do Oracle a mesma query é executada sem problemas mas quando coloco a mesma para ser executada dentro do programa o erro ocorre. Fora esse problema de limite de caracteres para o nome da coluna existe mais alguma coisa ... e o mais intrigante que a mesma query sedo coloca em um programa Delphi ou VB 6 aqui roda sem problemas sera algum bug no VS


    Junior
    quinta-feira, 12 de agosto de 2010 12:42
  • Você está usando qual provider ADO.NET para executar a query?

    At.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    quinta-feira, 12 de agosto de 2010 17:51
    Moderador
  • Provider=OraOLEDB.Oracle.1;Password=pw;Persist Security Info=True;User ID=us;Data Source=bd"

     

    ;

    Estou usando essa string de conexão com o Oracle


    Junior
    quinta-feira, 12 de agosto de 2010 18:45
  • Tente rodar o sql usando o oracle client:

       // cria o factory do oracle...
       DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OracleClient");
       
       // cria a conexão...
       DbConnection connection = factory.CreateConnection();
       connection.ConnectionString = "Password=pw;Persist Security Info=True;User ID=us;Data Source=bd";
       
       // cria o command...
       DbCommand command = factory.CreateCommand();
       command.Connection = connection;
       command.CommandText = @"SELECT XXX";
    
       // cria o dataadapter...
       DbDataAdapter adapter = factory.CreateDataAdapter();
       adapter.SelectCommand = command;
    
       // preenche o dataset...
       DataSet dataSet = new DataSet();
       adapter.Fill(dataSet);
    
    

     


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    quinta-feira, 12 de agosto de 2010 19:01
    Moderador
  • Ola

    Usei a seguinte string de conexão (Provider=msdaora;Data Source=db;User Id=us;Password=pw;)

    E funcionou pelo para essa situação da query com as subquerys ficou OK

    Valeu e obrigado pela ajuda.

    Abs.


    Junior
    quinta-feira, 12 de agosto de 2010 20:45