Anda memiliki banyak pekerjaan di depan!
Antara DB2 dan Oracle, beberapa perbedaan penting adalah (hanya enumerasi sewenang-wenang dari apa yang dapat saya pikirkan):
Jenis data
- Tipe data angka:DB2 memiliki lebih banyak tipe standar, seperti
SMALLINT
,INTEGER
,DOUBLE
, dll. Itu tidak ada di Oracle SQL (walaupun beberapa ada di PL/SQL). Ini penting untuk DDL dan untuk casting dan beberapa kasus penggunaan lainnya, seperti ketepatan predikat - Tipe data tanggal:Satu-satunya perbedaan Oracle antara
DATE
danTIMESTAMP
adalah fakta bahwaTIMESTAMP
memiliki mikrodetik. TapiDATE
juga dapat berisi informasi waktu. Di DB2,DATE
tidak memiliki informasi waktu, saya pikir. - Tipe data karakter:Baca tentang perbedaan antara
VARCHAR
danVARCHAR2
di Oracle NULL
. Di Oracle,NULL
jauh lebih umum daripada di DB2. Sebelum DB2 v9.7, Anda harus menggunakanNULL
ke tipe eksplisit apa pun, mis.cast(null as integer)
. Itu tidak perlu di Oracle.
Objek sistem
SYSIBM.DUAL
menjadiDUAL
- Fungsi:Semuanya sedikit berbeda. Anda harus memeriksa kasus per kasus. Misalnya,
LOCATE
menjadiINSTR
Sintaks
TRUNCATE IMMEDIATE
menjadiTRUNCATE
EXCEPT
menjadiMINUS
- KHUSUS DB2
FETCH FIRST n ROWS ONLY
:Tidak ada klausa seperti itu di Oracle. Anda harus menggunakanROWNUM
atauROW_NUMBER() OVER()
pemfilteran (lihat contoh ini ) MERGE
DB2 pernyataan lebih kuat daripada Oracle, jika Anda menggunakan ini.- DB2 mendukung
INSERT INTO .. (..) VALUES (..), (..), (..)
. Dengan Oracle, Anda harus menulisINSERT INTO .. SELECT .. UNION ALL SELECT .. UNION ALL SELECT ..
Lanjutan
- Jika Anda menggunakan prosedur tersimpan, prosedur tersebut bekerja sedikit berbeda, terutama dengan tipe data lanjutan yang terlibat, tetapi itu di luar cakupan di sini.
Tembakan Anda yang paling efisien dalam hal ini mungkin menggunakan semacam abstraksi SQL. Jika Anda menggunakan Java, saya sarankan Anda membungkus pernyataan SQL Anda dengan jOOQ (Penafian:Saya bekerja untuk perusahaan di belakang jOOQ). jOOQ menyediakan abstraksi tingkat API untuk semua fakta di atas. Banyak SQL dapat dieksekusi baik pada DB2 dan Oracle, tanpa adaptasi. Kami juga sedang mengerjakan produk penerjemah yang lebih independen:https://www.jooq.org/translate
Pada tingkat abstraksi yang lebih tinggi, Hibernate (atau implementasi JPA lainnya) dapat melakukan hal yang sama untuk Anda