首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

使用 IBM DB2 數據庫的常見注意事項與開發陷阱

     編輯:DB2 教學

1. 客戶端配置

資料庫服務端非本機時,需在「客戶機配置輔助程序」中配置連接。

2. 控制中心與工具限制

控制中心無法直接增刪改數據,需寫 SQL。Quest 工具雖可增數據,但不支援複製/貼上/Tab 鍵,逐個輸入極不便。PB 可單元格編輯,但編輯按鈕與刪除表按鈕過近,誤觸風險高。

3. 視圖中不能直接用 ORDER BY

必須用子查詢:

select * from (select a, b, c from table1 order by a) as tab

前提是已打補丁。

4. 存儲過程常見坑

  • 無 TRIM 函數,需用 LTRIM(RTRIM())。
  • INSERT 不能用表達式賦值,需先賦給變量。
  • 調用其他存儲過程不能用常量做參數,需先賦給變量。
  • SELECT * FROM TABLE FETCH FIRST N ROWS ONLY 在存儲過程中不可用。

5. 動態 SQL 差異

存儲過程可用動態 SQL,但函數不可用。

6. 游標自動關閉

遇到 COMMIT 或 ROLLBACK 時自動關閉游標,慎用單獨提交。

7. 開發工具問題

Proc Builder 調試易記憶體不足、畫面花屏;斷點暫停稍長即超時。

8. 日期運算陷阱

日期變量 + 1 MONTHS 若遇 2 月 29 日會報錯 (SQLSTATE 01506)。替代方案:取當月第一天為基準再加減月份。

9. 變量賦值語法

不可用 SELECT ... INTO ...,必須用 SET V = (SELECT ...)。範例:

drop function SXFM.ISORDERSUBMITDATE;
create FUNCTION SXFM.ISORDERSUBMITDATE(IN_ROW_ID DECIMAL(16,0))
RETURNS DATE
LANGUAGE SQL
BEGIN ATOMIC
DECLARE V_SUBMIT_DATE DATE;
DECLARE V_SELL_ID DECIMAL(16, 0);
DECLARE V_BUY_ID DECIMAL(16, 0);
SET V_SELL_ID = (SELECT COALESCE(RECEIVE_ID,-1) FROM IS_ORDER WHERE ROW_ID=IN_ROW_ID);
SET V_BUY_ID = (SELECT COALESCE(PAY_ID,-1) FROM IS_ORDER WHERE ROW_ID=IN_ROW_ID);
SET V_SUBMIT_DATE = (SELECT DATE(MAX(A.SUBMIT_DATE)) FROM AM_AUDIT_QUEUE A, SM_USER B, SM_USER C
WHERE A.TABLE_CODE='IS_ORDER' AND A.TABLE_ROW_ID=IN_ROW_ID
AND A.AUDIT_EMP_ID=C.ROW_ID AND C.BRANCH_ID=V_BUY_ID
AND A.SUBMIT_EMP_ID=B.ROW_ID AND B.BRANCH_ID=V_SELL_ID);
RETURN V_SUBMIT_DATE;
END
#SYNC 10;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved