Máte před sebou spoustu práce!
Mezi DB2 a Oracle jsou některé důležité rozdíly (jen libovolný výčet toho, co mě napadá):
Datové typy
- Číselné datové typy:DB2 má mnohem více standardních typů, jako je
SMALLINT
,INTEGER
,DOUBLE
, atd. Ty v Oracle SQL neexistují (ačkoli některé existují v PL/SQL). To je důležité pro DDL a pro casting a některé další případy použití, jako je správnost predikátů - Datové typy dat:Jediný rozdíl společnosti Oracle mezi
DATE
aTIMESTAMP
je skutečnost, žeTIMESTAMP
má mikrosekundy. AleDATE
může obsahovat i časové údaje. V DB2DATE
myslím, že nemá žádné časové informace. - Znakové datové typy:Přečtěte si o rozdílech mezi
VARCHAR
aVARCHAR2
v Oracle NULL
. V OracleNULL
je mnohem obecnější než v DB2. Před DB2 v9.7 jste museli přetypovatNULL
na jakýkoli explicitní typ, např.cast(null as integer)
. V Oracle to není nutné.
Systémové objekty
SYSIBM.DUAL
jednoduše se změní naDUAL
- Funkce:Všechny jsou trochu jiné. Budete muset zkontrolovat případ od případu. Například
LOCATE
se změní naINSTR
Syntaxe
TRUNCATE IMMEDIATE
se změní naTRUNCATE
EXCEPT
se změní naMINUS
- DB2
FETCH FIRST n ROWS ONLY
:V Oracle žádná taková klauzule neexistuje. Budete muset použítROWNUM
neboROW_NUMBER() OVER()
filtrování (viz tento příklad ) MERGE
DB2 příkaz je výkonnější než příkaz Oracle, v případě, že jej používáte.- DB2 podporuje
INSERT INTO .. (..) VALUES (..), (..), (..)
. U Oracle byste museli napsatINSERT INTO .. SELECT .. UNION ALL SELECT .. UNION ALL SELECT ..
Pokročilé
- Pokud používáte uložené procedury, fungují trochu jinak, zvláště s pokročilými datovými typy, ale to je mimo rozsah.
Nejúčinnějším pokusem o to může být použití nějaké abstrakce SQL. Pokud používáte Javu, doporučil bych vám zabalit příkazy SQL do jOOQ (Prohlášení:Pracuji pro společnost za jOOQ). jOOQ poskytuje abstrakci na úrovni API pro všechny výše uvedené skutečnosti. Velké množství SQL lze spustit jak na DB2, tak na Oracle, bez přizpůsobení. Pracujeme také na nezávislejším překladatelském produktu:https://www.jooq.org/translate
Na vyšší úrovni abstrakce, Hibernate (nebo jiné implementace JPA) mohou udělat totéž pro vás