Frage

baute ich ein kleines Abfrage-Tool für Oracle mit OracleCommand und OracleDataAdapter. Benutzer nur Eingabe eine vollständige Abfrage (keine Parameter), durchführen und die Ergebnisse werden in einem Datagridview angezeigt. So weit, so gut, obwohl ich versuchte, eine ungültige Abfrage, z.

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

Diese Abfrage ist nicht gültig SQL für Oracle. Sie haben die to_date () Funktion verwenden, um mit Datumsliterale zu vergleichen. SQL Entwickler lehnt es auch, aber irgendwie meine Abfrage-Tool funktioniert einfach. Bedeutet das, dass mein OracleCommand ein bisschen ein Assistent hier ist, oder bin ich etwas falsch gemacht? Auch ist es eine Möglichkeit, dieses Verhalten zu unterlassen, weil der Zweck des Werkzeugs Abfrage zu testen, die immer funktionieren soll ...

Danke

War es hilfreich?

Lösung

Die Abfrage kann für Oracle gültig sein. Sie haben noch to_date() zu verwenden, wenn Sie die Datumszeichenfolge in der Sitzung des Datumsformat geben, obwohl es besser ist in der Regel wie diese, die ohnehin zu vermeiden Fragen zu tun.

Es klingt wie Sie eine andere NLS_DATE_FORMAT in Ihrem Tool-Umgebung, dass in SQL Developer haben, oder das Sitzungsdatumsformat festgelegt wird implizit durch OracleCommand.

Sie können select value from nls_session_parameters where parameter = 'NLS_DATE_FORMAT', um zu sehen, was es von SQL * Plus und SQL Developer ist, und von Ihrem Werkzeug; und von nls_database_parameters zu sehen, welche die Datenbank standardmäßig überschrieben.

Sieht aus wie Ihr Werkzeug kann DD-MON-RR haben und Sie erwarten, an anderer Stelle ein anderes Format, aber ohne diese Tabellen überprüft, es ist schwer zu sagen, wo Sie die Datenbank Standard verwenden und wo Sie überschreiben sie auf Session-Ebene. Ich würde vermuten, dass die DB Standard obwohl, und Sie haben eine Überschreibung in der anderen Umgebungen.

Von SQL Developer, versuchen alter session set nls_date_format='DD-MON-RR'; und dann erneut ausführen Ihre ungültige Abfrage -. Sollte es auch funktionieren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top