Domanda

Ho costruito un piccolo strumento di query per Oracle utilizzando OracleCommand e OracleDataAdapter. Utenti basta inserire una query full (senza parametri), eseguire ei risultati sono mostrati in una datagridview. Fin qui tutto bene, anche se ho provato una query non valida, per esempio:.

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

Questa query SQL non è valida per Oracle. Devi usare la funzione TO_DATE () da confrontare con data letterali. sviluppatore SQL respinge anche, ma in qualche modo il mio strumento di query funziona. Vuol dire che il mio OracleCommand è un po 'di un mago qui o sto facendo qualcosa di sbagliato? Inoltre è ci un modo per omettere questo comportamento perché lo scopo dello strumento sta testando le query, che dovrebbe funzionare sempre ...

Grazie

È stato utile?

Soluzione

La query può essere valido per Oracle. Non è necessario utilizzare to_date() se si dà la stringa di data in formato data la sessione, anche se è generalmente migliore per farlo che in ogni caso di problemi di evitare come questo.

Sembra che si dispone di un diverso NLS_DATE_FORMAT nell'ambiente strumento a quello in SQL Developer, o il formato della data della sessione è stato impostato in modo implicito da OracleCommand.

È possibile select value from nls_session_parameters where parameter = 'NLS_DATE_FORMAT' per vedere quello che è da SQL * Plus e SQL Developer, e dal vostro strumento; e da nls_database_parameters per vedere quale è prevalente l'impostazione predefinita di database.

Sembra che il tuo strumento può avere DD-MON-RR e ci si aspetta qualche altro formato altrove, ma senza controllare tali tabelle è difficile dire dove si sta utilizzando il default del database e dove si sta ignorando che a livello di sessione. Direi che è il default DB e anche se si dispone di un override nei tuoi altri ambienti.

Da SQL Developer, provare alter session set nls_date_format='DD-MON-RR'; e poi ri-eseguire la query non valida -. Dovrebbe funzionare anche lì

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top