Question

Je fais un insert d'un C # .NET application dans une base de données Oracle. La requête qui ressemble échoue quelque chose comme:

INSERT INTO staging (create_date) VALUES ('16-Nov-1999')

Quand je le lance à partir de SQL Navigator, il fonctionne très bien. Grâce à .NET, la base de données lance:

ORA-01858: a non-numeric character was found where a numeric was expected

J'ai couru quelques cas de test et a confirmé que c'est l'année faisant l'exception. Tout ce qui suit '31 1999' --déc fonctionne très bien.

Était-ce utile?

La solution

Il vaut mieux utiliser le fonction TO_DATE lors de la présentation des valeurs qui doivent être stockées comme des dates :

INSERT INTO staging 
   (create_date) 
VALUES 
   (TO_DATE('16-Nov-1999', 'DD-MON-YYYY'))

Autres conseils

La question est à l'aide du fournisseur de System.Data.Oledb générique. Le System.Data.OracleClient spécifique Oracle n'a pas ce problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top