Usuário com melhor resposta
Problema em passar data para o banco de dados Oracle

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!
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
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
-