自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

談一談兼容Oracle和DB2開發(fā)時的注意事項

數(shù)據(jù)庫 Oracle
本文主要介紹了兼容Oracle和DB2開發(fā)時的一些注意事項,了解了這些注意事項,我們在開發(fā)時就可以避免一些不兼容的現(xiàn)象的發(fā)生了。

我們在做兼容oralce、db2開發(fā)時,需要注意一些問題,以免遇到不兼容的現(xiàn)象,為開發(fā)者帶來麻煩。本例子的前提是db2版本是9.7,且是開啟PLSQL編譯選項之后創(chuàng)建的數(shù)據(jù)庫。接下來我們就開始介紹這些。

注意事項:

1. 在like 之后若使用了表字段,應(yīng)統(tǒng)一改成使用locate函數(shù),如:

oralce寫法:

 

  1. select * from fw_right a where '03' like a.rightid||'%'; 

 

兼容寫法:

 

  1. select * from fw_right a where locate('03',a.rightid) = 1; 

 

oralce寫法:

 

  1. select * from fw_right a where '03' like '%'||a.rightid||'%'; 

 

兼容寫法:

 

  1. select * from fw_right a where locate('03',a.rightid) > 0; 

 

2. 視圖中使用的別名不應(yīng)該與當(dāng)前表字段同名。

如以下語句,在oracle中不會有問題,但在db2中會報"SQL0153N"錯誤。

 

  1. CREATE OR REPLACE VIEW V_WF_TODOLIST AS  
  2.  
  3. select c.process_def_id, c.process_def_name, a.action_def_id,  
  4.  
  5. a.work_item_id, a.bae007, a.action_def_name,  
  6.  
  7. a.state,  a.pre_wi_id,  a.work_type,  
  8.  
  9. a.operid, a.x_oprator_ids,  b.process_key_info,  
  10.  
  11. to_char(to_date(a.start_time, 'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') as start_time,  
  12.  
  13. to_char(to_date(a.complete_time,'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') as complete_time,  
  14.  
  15. a.filter_opr, a.memo,a.bae002,a.bae003, a.bae006,c.x_action_def_ids  
  16.  
  17. from wf_work_item a, wf_process_instance b, wf_action_def c  
  18.  
  19. where a.action_def_id  = c.action_def_id  
  20.  
  21. and b.process_def_id = c.process_def_id  
  22.  
  23. and a.bae007 = b.bae007  
  24.  
  25. and a.state in('0','2') 

 

兼容寫法:

 

  1. CREATE OR REPLACE VIEW V_WF_TODOLIST AS  
  2.  
  3. select c.process_def_id, c.process_def_name, a.action_def_id,  
  4.  
  5. a.work_item_id, a.bae007, a.action_def_name,  
  6.  
  7. a.state,  a.pre_wi_id,  a.work_type,  
  8.  
  9. a.operid, a.x_oprator_ids,  b.process_key_info,  
  10.  
  11. to_char(to_date(a.start_time, 'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') as start_time_0,  
  12.  
  13. to_char(to_date(a.complete_time,'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') as complete_time_0,  
  14.  
  15. a.filter_opr, a.memo,a.bae002,a.bae003, a.bae006,c.x_action_def_ids  
  16.  
  17. from wf_work_item a, wf_process_instance b, wf_action_def c  
  18.  
  19. where a.action_def_id  = c.action_def_id  
  20.  
  21. and b.process_def_id = c.process_def_id  
  22.  
  23. and a.bae007 = b.bae007  
  24.  
  25. and a.state in('0','2') 

 

3.在下列情況下不允許ORDER BY 或 FETCH FIRST n ROWS ONLY:

  • 外層全查詢視圖
  •  "SQL 表函數(shù)"的 RETURN 語句中的外層全查詢
  • 具體化查詢表定義
  • 未用圓括號括起來的子查詢

否則會報"SQL20211N  規(guī)范 ORDER BY 或 FETCH FIRST n ROWS ONLY 無效。"錯誤。

oralce寫法:

 

  1. CREATE OR REPLACE VIEW V_FW_BLANK_BULLETIN as  
  2.  
  3. select id, bae001,  operunitid, operunittype, unitsubtype, ifergency,  
  4.  
  5. title,  content, digest,  duetime,  validto, aae100,  
  6.  
  7. bae006, bae002,  bae003,  id as colid,  
  8.  
  9. substr(digest,1,20) as digest2  
  10.  
  11. from fw_bulletin  
  12.  
  13. where duetime <= to_char(sysdate,'yyyymmddhh24miss')  
  14.  
  15. and (to_char(validto) >= to_char(sysdate,'yyyymmddhh24miss') or validto is null)  
  16.  
  17. and aae100 ='1' 
  18.  
  19. order by ifergency desc, id desc,  duetime desc 

 

兼容寫法:

 

  1. CREATE OR REPLACE VIEW V_FW_BLANK_BULLETIN as  
  2.  
  3. select * from (select id, bae001,  operunitid, operunittype, unitsubtype, ifergency,  
  4.  
  5. title,  content, digest,  duetime,  validto, aae100,  
  6.  
  7. bae006, bae002,  bae003,  id as colid,  
  8.  
  9. substr(digest,1,20) as digest2  
  10.  
  11. from fw_bulletin  
  12.  
  13. where duetime <= to_char(sysdate,'yyyymmddhh24miss')  
  14.  
  15. and (to_char(validto) >= to_char(sysdate,'yyyymmddhh24miss') or validto is null)  
  16.  
  17. and aae100 ='1' 
  18.  
  19. order by ifergency desc, id desc,  duetime desc) 

 

了解了以上Oracle、DB2開發(fā)時的注意事項,我們在做開發(fā)的時候就能夠盡量避免一些不兼容得狀況了。本文就介紹到這里,希望能對各位有所幫助。

【編輯推薦】

  1. 數(shù)據(jù)倉庫的邏輯建模之星型模式
  2. 簡單介紹一下SQL Profiler的過濾設(shè)置
  3. 使用SQLite擴展函數(shù)來定義自己的函數(shù)
  4. Oracle數(shù)據(jù)庫Shared Pool優(yōu)化過程詳解
  5. 檢測局域網(wǎng)電腦是否有安裝SQL Server數(shù)據(jù)庫
責(zé)任編輯:趙鵬 來源: CSDN博客
相關(guān)推薦

2010-08-06 15:27:14

DB2 batch u

2010-08-04 11:23:59

2010-11-01 13:24:15

DB2數(shù)據(jù)導(dǎo)入

2010-08-17 16:24:32

IBM DB2數(shù)據(jù)庫

2010-08-04 10:44:32

2010-11-02 13:09:42

DB2性能優(yōu)化

2010-07-29 13:56:32

2011-03-14 17:51:04

IBMDB2數(shù)據(jù)庫

2010-07-30 13:28:10

2010-08-09 09:05:41

DB2快照函數(shù)

2010-08-31 10:53:18

DB2導(dǎo)入數(shù)據(jù)庫

2010-08-19 14:11:29

DB2臨時表

2010-08-03 17:00:29

DB2 batch u

2011-08-02 13:08:06

Oracle索引

2010-07-29 13:09:48

DB2 9.7 兼容

2011-07-28 09:22:56

Oracle WDPOracle數(shù)據(jù)庫

2011-03-03 15:16:43

DB2數(shù)據(jù)庫遷移

2010-08-20 09:21:18

DB2打上補丁

2010-07-30 10:11:05

DB2臨時表

2010-07-29 09:52:04

DB2數(shù)據(jù)導(dǎo)入
點贊
收藏

51CTO技術(shù)棧公眾號