Du har en masse arbejde forude!
Mellem DB2 og Oracle er nogle vigtige forskelle (bare en vilkårlig opremsning af, hvad jeg kan komme i tanke om):
Datatyper
- Taldatatyper:DB2 har mange flere standardtyper, såsom
SMALLINT,INTEGER,DOUBLEosv. Disse findes ikke i Oracle SQL (selvom nogle findes i PL/SQL). Dette er vigtigt for DDL og for casting og nogle andre brugssager, såsom korrektheden af prædikater - Datodatatyper:Oracles eneste forskel mellem
DATEogTIMESTAMPer det faktum, atTIMESTAMPhar mikrosekunder. MenDATEkan også indeholde tidsoplysninger. I DB2,DATEhar ingen tidsoplysninger, tror jeg. - Tegndatatyper:Læs om forskellen mellem
VARCHARogVARCHAR2i Oracle NULL. I Oracle,NULLer meget mere generel end i DB2. Før DB2 v9.7 skulle du casteNULLtil enhver eksplicit type, f.eks.cast(null as integer). Det er ikke nødvendigt i Oracle.
Systemobjekter
SYSIBM.DUALbliver simpelthenDUAL- Funktioner:De er alle lidt forskellige. Du bliver nødt til at tjekke sag til sag. For eksempel
LOCATEbliverINSTR
Syntaks
TRUNCATE IMMEDIATEbliverTRUNCATEEXCEPTbliverMINUS- DB2's
FETCH FIRST n ROWS ONLY:Der er ingen sådan klausul i Oracle. Du skal brugeROWNUMellerROW_NUMBER() OVER()filtrering (se dette eksempel ) - DB2's
MERGEsætningen er mere kraftfuld end Oracles, hvis du bruger denne. - DB2 understøtter
INSERT INTO .. (..) VALUES (..), (..), (..). Med Oracle skal du skriveINSERT INTO .. SELECT .. UNION ALL SELECT .. UNION ALL SELECT ..
Avanceret
- Hvis du bruger lagrede procedurer, fungerer de lidt anderledes, især med avancerede datatyper involveret, men det er uden for rammerne her.
Dit mest effektive skud på dette kan være at bruge SQL-abstraktion af en slags. Hvis du bruger Java, vil jeg anbefale, at du pakker dine SQL-sætninger med jOOQ (Ansvarsfraskrivelse:Jeg arbejder for firmaet bag jOOQ). jOOQ leverer abstraktion på API-niveau for alle ovenstående fakta. En stor del af SQL kan udføres både på DB2 og Oracle uden tilpasning. Vi arbejder også på et mere uafhængigt oversætterprodukt:https://www.jooq.org/translate
På et højere abstraktionsniveau, Dvale (eller andre JPA-implementeringer) kan gøre det samme for dig