Bạn còn rất nhiều việc ở phía trước!
Giữa DB2 và Oracle, một số khác biệt quan trọng là (chỉ là sự liệt kê tùy ý những gì tôi có thể nghĩ đến):
Loại dữ liệu
- Các kiểu dữ liệu số:DB2 có nhiều kiểu tiêu chuẩn hơn, chẳng hạn như
SMALLINT,INTEGER,DOUBLE, v.v. Chúng không tồn tại trong Oracle SQL (mặc dù một số tồn tại trong PL / SQL). Điều này quan trọng đối với DDL và đối với việc truyền và một số trường hợp sử dụng khác, chẳng hạn như tính đúng đắn của các vị từ - Kiểu dữ liệu ngày:Sự khác biệt duy nhất của Oracle giữa
DATEvàTIMESTAMPthực tế làTIMESTAMPcó micro giây. NhưngDATEcũng có thể chứa thông tin thời gian. Trong DB2,DATETôi nghĩ là không có thông tin về thời gian. - Kiểu dữ liệu ký tự:Đọc về sự khác biệt giữa
VARCHARvàVARCHAR2trong Oracle -
NULL. Trong Oracle,NULLtổng quát hơn nhiều so với trong DB2. Trước DB2 v9.7, bạn phải truyềnNULLcho bất kỳ loại rõ ràng nào, ví dụ:cast(null as integer). Điều đó không cần thiết trong Oracle.
Đối tượng hệ thống
-
SYSIBM.DUALđơn giản trở thànhDUAL - Chức năng:Tất cả chúng đều khác nhau một chút. Bạn sẽ phải kiểm tra từng trường hợp một. Ví dụ:
LOCATEtrở thànhINSTR
Cú pháp
-
TRUNCATE IMMEDIATEtrở thànhTRUNCATE -
EXCEPTtrở thànhMINUS -
FETCH FIRST n ROWS ONLY:Không có mệnh đề này trong Oracle. Bạn sẽ phải sử dụngROWNUMhoặcROW_NUMBER() OVER()lọc (xem ví dụ này ) -
MERGEcủa DB2 tuyên bố mạnh hơn Oracle, trong trường hợp bạn sử dụng câu lệnh này. - DB2 hỗ trợ
INSERT INTO .. (..) VALUES (..), (..), (..). Với Oracle, bạn phải viếtINSERT INTO .. SELECT .. UNION ALL SELECT .. UNION ALL SELECT ..
Nâng cao
- Nếu bạn sử dụng các thủ tục được lưu trữ, chúng hoạt động hơi khác một chút, đặc biệt là với các loại dữ liệu nâng cao liên quan, nhưng điều đó nằm ngoài phạm vi ở đây.
Biện pháp hiệu quả nhất của bạn ở đây có thể là sử dụng một số kiểu trừu tượng SQL. Nếu bạn đang sử dụng Java, tôi khuyên bạn nên kết hợp các câu lệnh SQL của mình bằng jOOQ (Tuyên bố từ chối trách nhiệm:Tôi làm việc cho công ty đứng sau jOOQ). jOOQ cung cấp tính trừu tượng cấp API cho tất cả các dữ kiện trên. Rất nhiều SQL có thể được thực thi trên cả DB2 và Oracle mà không cần phải thích ứng. Chúng tôi cũng đang nghiên cứu sản phẩm phiên dịch độc lập hơn: https://www.jooq.org/translate
Ở cấp độ trừu tượng cao hơn, Hibernate (hoặc các triển khai JPA khác) có thể làm điều tương tự cho bạn