Pregunta

I construyó una pequeña herramienta de consulta para Oracle utilizando OracleCommand y OracleDataAdapter. Los usuarios con tan sólo introducir una consulta completa (sin parámetros), ejecutar y los resultados se muestran en un DataGridView. Hasta aquí todo bien, aunque he intentado una consulta no válida, por ejemplo:.

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

Esta consulta no es válida SQL para Oracle. Usted tiene que utilizar la función to_date () para comparar con literales de fecha. desarrollador de SQL también lo rechaza, pero de alguna manera mi herramienta de consulta simplemente funciona. ¿Eso significa que mi OracleCommand es un poco de un mago aquí o estoy haciendo algo mal? También hay una manera de omitir este comportamiento porque el propósito de la herramienta es la prueba de consultas, que debe trabajar siempre ...

Gracias

¿Fue útil?

Solución

La consulta puede ser válida para Oracle. Usted no tiene que usar to_date() si se le da la cadena de fecha en formato de fecha de la sesión, aunque por lo general es mejor que hacer eso de todos modos a cuestiones evitar como esto.

Parece que usted tiene una NLS_DATE_FORMAT diferente en el entorno de su herramienta para que en SQL Developer, o el formato de fecha de la sesión está siendo establecido implícitamente por OracleCommand.

Puede select value from nls_session_parameters where parameter = 'NLS_DATE_FORMAT' para ver lo que es desde SQL * Plus y SQL Developer y de su herramienta; y desde nls_database_parameters para ver cuál es sobrescribir el valor por defecto de base de datos.

Parece que tu herramienta puede tener DD-MON-RR y se está esperando algún otro formato en otro lugar, pero sin comprobar esas tablas es difícil decir dónde está utilizando la base de datos predeterminada y en el que está reemplazando al nivel de sesión. Supongo que es el valor por defecto, aunque DB y tiene una anulación de sus otros entornos.

A partir de SQL Developer, tratar alter session set nls_date_format='DD-MON-RR'; y vuelva a ejecutar la consulta no válida -. Debe trabajar allí también

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top