Du har mycket arbete framför dig!
Mellan DB2 och Oracle är några viktiga skillnader (bara en godtycklig uppräkning av vad jag kan komma på):
Datatyper
- Taldatatyper:DB2 har många fler standardtyper, till exempel
SMALLINT
,INTEGER
,DOUBLE
, etc. De finns inte i Oracle SQL (även om vissa finns i PL/SQL). Detta är viktigt för DDL och för gjutning och vissa andra användningsfall, såsom korrektheten av predikat - Datumdatatyper:Oracles enda skillnad mellan
DATE
ochTIMESTAMP
är det faktum attTIMESTAMP
har mikrosekunder. MenDATE
kan även innehålla tidsinformation. I DB2,DATE
har ingen tidsinformation tror jag. - Teckendatatyper:Läs om skillnaden mellan
VARCHAR
ochVARCHAR2
i Oracle NULL
. I Oracle,NULL
är mycket mer allmän än i DB2. Innan DB2 v9.7 var du tvungen att castaNULL
till någon uttrycklig typ, t.ex.cast(null as integer)
. Det är inte nödvändigt i Oracle.
Systemobjekt
SYSIBM.DUAL
blir helt enkeltDUAL
- Funktioner:De är alla lite olika. Du måste kontrollera från fall till fall. Till exempel
LOCATE
blirINSTR
Syntax
TRUNCATE IMMEDIATE
blirTRUNCATE
EXCEPT
blirMINUS
- DB2:s
FETCH FIRST n ROWS ONLY
:Det finns ingen sådan klausul i Oracle. Du måste användaROWNUM
ellerROW_NUMBER() OVER()
filtrering (se detta exempel ) - DB2:s
MERGE
uttalandet är kraftfullare än Oracles, om du använder detta. - DB2 stöder
INSERT INTO .. (..) VALUES (..), (..), (..)
. Med Oracle skulle du behöva skrivaINSERT INTO .. SELECT .. UNION ALL SELECT .. UNION ALL SELECT ..
Avancerat
- Om du använder lagrade procedurer fungerar de lite annorlunda, särskilt med avancerade datatyper inblandade, men det är utanför omfattningen här.
Ditt mest effektiva skott på detta kan vara att använda SQL-abstraktion av något slag. Om du använder Java skulle jag rekommendera att du slår in dina SQL-satser med jOOQ (Ansvarsfriskrivning:Jag arbetar för företaget bakom jOOQ). jOOQ tillhandahåller abstraktion på API-nivå för alla ovanstående fakta. En hel del SQL kan köras både på DB2 och Oracle, utan anpassning. Vi arbetar också med en mer oberoende översättarprodukt:https://www.jooq.org/translate
På en högre abstraktionsnivå, Hibernate (eller andra JPA-implementeringar) kan göra samma sak för dig