Ich habe ein PreparedStatement, das sowohl auf ORACLE als auch auf MYSQL ausgeführt werden soll. Aber ich kann nicht herausfinden, wie die CAST (NULL AS ...) die folgenden WerkeJava PreparedStatement Cross-DB mit Casting
auf Oracle zu handhaben (aber nicht auf Mysql):
SELECT TIMB_INS,
CAST(NULL AS TIMESTAMP) AS TIMB_CLO
FROM TOPS
Auf Mysql folgende Arbeiten (aber nicht auf Oracle):
SELECT TIMB_INS,
CAST(NULL AS DATETIME) AS TIMB_CLO
FROM TOPS
(Bitte beachten Sie, dass die erste Spalte ausgewählt, „TIMB_INS“, gibt den richtigen Datentyp für den Zieldatenbanktyp in beiden Fällen, dh Zeitstempel für Oracle und DATETIME- für MySql)
.Es gibt eine Möglichkeit, es so zu setzen, dass es für beide funktioniert? I.E. Kann ich es in irgendeiner Weise db-unabhängig machen?
Dank Marco
Ja, es ist ein Anruf von einer eigenständigen Java-Anwendung. Ich denke, dass Ihre dritte Lösung den Trick tun könnte, obwohl ich es (brilliant?) Von sql nur lösen wollte. Aber vielleicht ist es einfach nicht möglich. (Vielen Dank für Ihre schnelle Antwort!) –
Vielleicht gibt es auch eine SQL-Lösung. Ich habe einfach nicht die Werkzeuge, um mit denen für Sie zu experimentieren. –
Eine andere - nicht so brillante - Lösung würde in dieser Tabelle in beiden DBs eine NOT USED (Null) -Spalte des gewünschten Typs hinzufügen und auswählen. Aus Gründen der Einfachheit haben wir uns jedoch für Ihre dritte Lösung entschieden. Wir haben den DB-Namen von "connection.getMetaData(). GetDatabaseProductName()" gesehen. Danke! ;-) Tschüss. –