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
DATEdanTIMESTAMPadalah fakta bahwaTIMESTAMPmemiliki mikrodetik. TapiDATEjuga dapat berisi informasi waktu. Di DB2,DATEtidak memiliki informasi waktu, saya pikir. - Tipe data karakter:Baca tentang perbedaan antara
VARCHARdanVARCHAR2di Oracle NULL. Di Oracle,NULLjauh lebih umum daripada di DB2. Sebelum DB2 v9.7, Anda harus menggunakanNULLke tipe eksplisit apa pun, mis.cast(null as integer). Itu tidak perlu di Oracle.
Objek sistem
SYSIBM.DUALmenjadiDUAL- Fungsi:Semuanya sedikit berbeda. Anda harus memeriksa kasus per kasus. Misalnya,
LOCATEmenjadiINSTR
Sintaks
TRUNCATE IMMEDIATEmenjadiTRUNCATEEXCEPTmenjadiMINUS- KHUSUS DB2
FETCH FIRST n ROWS ONLY:Tidak ada klausa seperti itu di Oracle. Anda harus menggunakanROWNUMatauROW_NUMBER() OVER()pemfilteran (lihat contoh ini ) MERGEDB2 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