Sie haben viel Arbeit vor sich!
Zwischen DB2 und Oracle gibt es einige wichtige Unterschiede (nur eine willkürliche Aufzählung dessen, was mir einfällt):
Datentypen
- Anzahl Datentypen:DB2 hat viele weitere Standardtypen, wie zum Beispiel
SMALLINT,INTEGER,DOUBLEusw. Diese sind in Oracle SQL nicht vorhanden (obwohl einige in PL/SQL vorhanden sind). Dies ist wichtig für DDL und für das Casting und einige andere Anwendungsfälle, wie z. B. die Korrektheit von Prädikaten - Datumsdatentypen:Oracles einziger Unterschied zwischen
DATEundTIMESTAMPist die Tatsache, dassTIMESTAMPhat Mikrosekunden. AberDATEkann auch Zeitinformationen enthalten. In DB2DATEhat keine Zeitangabe, glaube ich. - Zeichendatentypen:Lesen Sie mehr über den Unterschied zwischen
VARCHARundVARCHAR2in Oracle NULL. In OracleNULList viel allgemeiner als in DB2. Vor DB2 v9.7 mussten SieNULLumwandeln zu jedem expliziten Typ, z.cast(null as integer). Das ist in Oracle nicht nötig.
Systemobjekte
SYSIBM.DUALwird einfach zuDUAL- Funktionen:Sie sind alle ein bisschen anders. Musst du im Einzelfall prüfen. Beispiel:
LOCATEwird zuINSTR
Syntax
TRUNCATE IMMEDIATEwird zuTRUNCATEEXCEPTwird zuMINUS- DB2's
FETCH FIRST n ROWS ONLY:Es gibt keine solche Klausel in Oracle. Sie müssenROWNUMverwenden oderROW_NUMBER() OVER()Filtern (siehe dieses Beispiel ). ) - DB2s
MERGE-Anweisung ist leistungsfähiger als die von Oracle, falls Sie diese verwenden. - DB2 unterstützt
INSERT INTO .. (..) VALUES (..), (..), (..). Bei Oracle müssten SieINSERT INTO .. SELECT .. UNION ALL SELECT .. UNION ALL SELECT ..schreiben
Erweitert
- Wenn Sie gespeicherte Prozeduren verwenden, funktionieren sie etwas anders, insbesondere bei fortgeschrittenen Datentypen, aber das geht hier nicht in den Rahmen.
Der effizienteste Versuch, dies zu erreichen, besteht möglicherweise darin, eine Art SQL-Abstraktion zu verwenden. Wenn Sie Java verwenden, würde ich empfehlen, dass Sie Ihre SQL-Anweisungen mit jOOQ umschließen (Disclaimer:Ich arbeite für das Unternehmen hinter jOOQ). jOOQ bietet eine Abstraktion auf API-Ebene für alle oben genannten Fakten. Sehr viel SQL kann ohne Anpassung sowohl auf DB2 als auch auf Oracle ausgeführt werden. Wir arbeiten auch an einem unabhängigeren Übersetzerprodukt:https://www.jooq.org/translate
Auf einer höheren Abstraktionsebene Hibernate (oder andere JPA-Implementierungen) können dasselbe für Sie tun