Предстои ви много работа!
Между DB2 и Oracle има някои важни разлики (просто произволно изброяване на това, за което мога да се сетя):
Типове данни
- Числови типове данни:DB2 има много повече стандартни типове, като
SMALLINT,INTEGER,DOUBLEи т.н. Те не съществуват в Oracle SQL (въпреки че някои съществуват в PL/SQL). Това е важно за DDL и за кастинг и някои други случаи на употреба, като например коректността на предикатите - Типове данни за дата:Единствената разлика на Oracle между
DATEиTIMESTAMPе фактът, чеTIMESTAMPима микросекунди. НоDATEможе също да съдържа информация за времето. В DB2,DATEняма информация за времето, мисля. - Символни типове данни:Прочетете за разликата между
VARCHARиVARCHAR2в Oracle NULL. В Oracle,NULLе много по-общо отколкото в DB2. Преди DB2 v9.7 трябваше да преобразуватеNULLкъм произволен изричен тип, напр.cast(null as integer). Това не е необходимо в Oracle.
Системни обекти
SYSIBM.DUALпросто ставаDUAL- Функции:Всички те са малко по-различни. Ще трябва да проверите за всеки случай. Например
LOCATEставаINSTR
Синтаксис
TRUNCATE IMMEDIATEставаTRUNCATEEXCEPTставаMINUS- DB2
FETCH FIRST n ROWS ONLY:В Oracle няма такава клауза. Ще трябва да използватеROWNUMилиROW_NUMBER() OVER()филтриране (вижте този пример ) - DB2
MERGEе по-мощен от този на Oracle, в случай че използвате това. - DB2 поддържа
INSERT INTO .. (..) VALUES (..), (..), (..). С Oracle ще трябва да напишетеINSERT INTO .. SELECT .. UNION ALL SELECT .. UNION ALL SELECT ..
Разширено
- Ако използвате съхранени процедури, те работят малко по-различно, особено с включени разширени типове данни, но това е извън обхвата тук.
Вашият най-ефективен изстрел в това може да бъде да използвате SQL абстракция от някакъв вид. Ако използвате Java, бих ви препоръчал да обвиете вашите SQL изрази с jOOQ (Отказ от отговорност:работя за компанията зад jOOQ). jOOQ предоставя абстракция на ниво API за всички горепосочени факти. Голяма част от SQL може да се изпълнява както на DB2, така и на Oracle, без адаптиране. Работим и върху по-независим продукт за преводач:https://www.jooq.org/translate
На по-високо ниво на абстракция, Hibernate (или други реализации на JPA) могат да направят същото за вас