資料庫伺服器非本機時,必須在「用戶端配置輔助程式」建立 TCP/IP 節點與資料庫別名,否則無法遠端連線。
建議:老實寫 UPDATE/DELETE SQL 最穩妥。
建立 View 時不可直接寫 ORDER BY,需用子查詢包裹:
CREATE VIEW v_sorted AS
SELECT * FROM (SELECT a, b, c FROM table1 ORDER BY a) AS t;
前提:資料庫已套用相關修補程式 (Fixpack)。
LTRIM/RTRIM,去除雙邊空格需巢狀 LTRIM(RTRIM(col))。FETCH FIRST n ROWS ONLY 在 SP 中不可用。預存程序可用動態 SQL (PREPARE/EXECUTE),但使用者定義函數 (UDF) 完全禁止動態 SQL。
執行 Commit 或 Rollback 時,所有未加 WITH HOLD 的游標自動關閉。長交易中需謹慎使用單獨 Commit,或在游標宣告加 WITH HOLD。
DATE + 1 MONTH 在 2 月 29 日會拋錯 (SQLSTATE 01506:日期調整導致無效日期)。
替代方案:取該月第一天為基準再加減月份:
SET v_first_day = DATE(v_date - DAY(v_date) DAYS + 1 DAYS);
SET v_next_month = v_first_day + 1 MONTHS;
SP/UDF 中不可用 SELECT ... INTO ...,必須用 SET var = (SELECT ...):
SET v_sell_id = (SELECT COALESCE(receive_id, -1) FROM is_order WHERE row_id = in_row_id);
熟悉上述限制與替代寫法,可避開 80% 開發期與維運期的常見坑點,提升 DB2 專案交付品質。