none
Problema em passar data para o banco de dados Oracle RRS feed

  • Pergunta

  • Olá amigos,

    Estou com um problema para passar valores do tipo string para DATE no meu banco de dados Oracle. Vou explicar:

    Estou pegando o valor de um arquivo .xlsx:

    string dataExemplo = row[0].ToString();


    e salvando no banco assim:

    OracleCommand oracleCommand = new OracleCommand("INSERT INTO TB_EXEMPLO VALUES ('TO_DATE('" + dataExemplo + "','dd/mm/yyyy')')", connectionOracle); 

    Estou salvando cerca de 18 valores, mesclados entre strings e datas. Coloquei apenas um apenas para exemplificar.

    Estou recebendo uma mensagem de retorno:

    ORA-00917: vírgula não encontrada

    Gostaria de saber se essa forma de passagem 'TO_DATE('" + dataExemplo + "','dd/mm/yyyy')' está correta, ou talvez precise manipular esse valor antes de passar pro banco.

    Obrigado!

    segunda-feira, 31 de outubro de 2016 18:32

Respostas

  • Boa tarde,

     correto seria o to_date iniciar sem o apóstrofo:

    OracleCommand oracleCommand = new OracleCommand("INSERT INTO TB_EXEMPLO VALUES (TO_DATE('" + dataExemplo + "','dd/mm/yyyy'))", connectionOracle); 

     Caso utilize parâmetros não precisa se preocupar com isso:

    OracleCommand oracleCommand = new OracleCommand("INSERT INTO TB_EXEMPLO VALUES (:p1))", connectionOracle); 
    
                        OracleParameter oraData = new OracleParameter();
                        oraData.OracleDbType = OracleDbType.Date;
                        oraData.Direction = System.Data.ParameterDirection.Input;
                        oraData.ParameterName = "p1";
                        oraData.Value = dataExemplo;
                        oracleCommand.Parameters.Add(oraData);
     Espero que lhe ajude.


    • Editado Daniel Brito br segunda-feira, 31 de outubro de 2016 19:01
    • Marcado como Resposta IT_CIBRA terça-feira, 1 de novembro de 2016 13:46
    segunda-feira, 31 de outubro de 2016 19:01

Todas as Respostas

  • Boa tarde,

     correto seria o to_date iniciar sem o apóstrofo:

    OracleCommand oracleCommand = new OracleCommand("INSERT INTO TB_EXEMPLO VALUES (TO_DATE('" + dataExemplo + "','dd/mm/yyyy'))", connectionOracle); 

     Caso utilize parâmetros não precisa se preocupar com isso:

    OracleCommand oracleCommand = new OracleCommand("INSERT INTO TB_EXEMPLO VALUES (:p1))", connectionOracle); 
    
                        OracleParameter oraData = new OracleParameter();
                        oraData.OracleDbType = OracleDbType.Date;
                        oraData.Direction = System.Data.ParameterDirection.Input;
                        oraData.ParameterName = "p1";
                        oraData.Value = dataExemplo;
                        oracleCommand.Parameters.Add(oraData);
     Espero que lhe ajude.


    • Editado Daniel Brito br segunda-feira, 31 de outubro de 2016 19:01
    • Marcado como Resposta IT_CIBRA terça-feira, 1 de novembro de 2016 13:46
    segunda-feira, 31 de outubro de 2016 19:01
  • Cara, show de bola!

    Não tinha me atentado a isso :(

    Muito obrigado!

    terça-feira, 1 de novembro de 2016 13:47