Question

Je construit un petit outil de requête pour Oracle en utilisant OracleCommand et OracleDataAdapter. Les utilisateurs entrent juste une requête complète (pas de paramètres), exécuter et les résultats sont présentés dans un datagridview. Jusqu'à présent, si bon, même si j'essayé une requête non valide, par exemple:.

SELECT * FROM mytable WHERE dateColumn = '1-JAN-10'

Cette requête n'est pas SQL valide pour Oracle. Vous devez utiliser la fonction to_date () pour comparer avec littéraux de date. développeur SQL rejette aussi, mais en quelque sorte mon outil de recherche fonctionne. Est-ce que cela signifie que mon OracleCommand est un peu d'un assistant ici ou que je fais mal quelque chose? est-il un moyen aussi d'omettre ce comportement parce que le but de l'outil teste les requêtes, ce qui devrait toujours travailler ...

Merci

Était-ce utile?

La solution

La requête peut être valable pour Oracle. Vous ne devez pas utiliser to_date() si vous donnez la chaîne de date dans votre format de date de session, mais il est généralement préférable de le faire de toute façon pour éviter des problèmes comme celui-ci.

Il semble que vous avez un NLS_DATE_FORMAT différent dans l'environnement de votre outil pour que développeur SQL, ou le format de date de la session est en cours d'implicitement par OracleCommand.

Vous pouvez select value from nls_session_parameters where parameter = 'NLS_DATE_FORMAT' pour voir ce qu'il est de SQL * Plus et SQL Developer, et de votre outil; et de nls_database_parameters pour voir ce qui est prépondérant par défaut de base de données.

On dirait que votre outil peut avoir DD-MON-RR et vous attendez un autre format ailleurs, mais sans vérifier ces tables, il est difficile de dire où vous utilisez la valeur par défaut de base de données et où vous êtes à ce niveau de remplaçant session. Je suppose que c'est la valeur par défaut DB si et vous avez un remplacement dans vos autres environnements.

De SQL Developer, essayez alter session set nls_date_format='DD-MON-RR'; puis relancez votre requête invalide -. Devrait travailler là aussi

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