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

DB2 開發維護必知 8 大實戰知識點

     編輯:DB2 教學

1. 客戶端連線設定

資料庫伺服器非本機 → 需在「用戶端設定助手」建立遠端連線別名(節點+資料庫編目)。

2. 圖形工具資料編輯限制

  • Control Center **無法**直接增刪改資料,需寫 SQL。
  • Quest 工具雖可編輯,但**不支援複製/貼上/Tab 鍵**,逐格輸入極痛苦。
  • PowerBuilder 單元格編輯看似可行,實際 **無法 Commit**;刪除表按鈕毗鄰編輯鍵,誤觸秒刪表且無提示。

3. View 不支援 ORDER BY(需繞道子查詢)

-- 錯誤
CREATE VIEW V AS SELECT * FROM T ORDER BY A;

-- 正確(需打補丁)
CREATE VIEW V AS SELECT * FROM (SELECT A,B,C FROM T ORDER BY A) AS TAB;

4. Stored Procedure 開發坑

  • 無 `TRIM()`,需 `LTRIM(RTRIM())`。
  • `INSERT` 不支援運算式直接賦值,必須先存變數。
  • 呼叫其他 SP 不能用常數參數,必須先存變數再傳遞。
  • `FETCH FIRST n ROWS ONLY` **在 SP 內不可用**(動態 SQL 除外)。

5. Function 內不可用動態 SQL

SP 可用 `EXECUTE IMMEDIATE`/`PREPARE`,Function **完全禁止**動態 SQL。

6. Commit/Rollback 會自動關閉游標

單獨提交需謹慎,建議在邏輯單元結束再 Commit,或用 `WITH HOLD` 游標(但 `ROLLBACK` 仍關閉)。

7. 日期運算邊界陷阱

-- 2004-02-29 + 1 MONTH → 錯誤 (SQLSTATE 01506)
-- 替代:取當月第一天再加減月份
SET V_DATE = (DATE(V_DATE) - DAY(V_DATE) DAYS) + 1 MONTHS;

8. 變數賦值語法

**不可** `SELECT ... INTO ...`,必須用 `SET V = (SELECT ...)`。

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 ...);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved