呼叫回傳結果集/臨時表/輸出參數的 SP 會自動產生 SQLWARNING,若統一記錄警告會產生大量 SQLCODE=0 噪音。解法:
DECLARE V_STATUS INTEGER DEFAULT 0;
CALL SPNAME;
SET V_STATUS = 1;
DECLARE CONTINUE HANDLER FOR SQLWARNING
BEGIN
IF V_STATUS <> 1 THEN
-- 真實警告處理,寫日誌
SET V_STATUS = 0;
END IF;
END;
db2 import from gh1.out of DEL messages err.txt insert into db2inst1.tb_dbf_match_ha
-- 注意:必須指定 Schema
VALUES (expr1, expr2) INTO (var1, var2); -- 效率優於多句 SET
-- 注意:VALUES 不能直接指派 NULL 給變數
-- VALUES (NULL) INTO var; -- 會報錯
SELECT * FROM tb_head_stock_balance WITH UR -- Uncommitted Read
ATOMIC 區塊視為單一整體,任一語句失敗則整區塊回滾 (含已成功語句),類似交易語意。
EXPORT → LOAD 效能最佳 (LOAD 不寫日誌),優於 SELECT INTO。
db2set DB2_HASH_JOIN=Y -- Hash Join 排序優化,大表 JOIN 效能大幅提升
db2set DB2_RR_TO_RS=Y -- RR 降為 RS,減少 Next-Key 鎖管理
COUNT(*) 全表掃描極慢EXISTS 遇首筆即停,但仍有掃描開銷SELECT INTO 前檢查:直接 SELECT INTO,捕捉 SQLCODE=100 (NOT FOUND) 或 SQLSTATE='20000',或多筆錯誤 → CONTINUE HANDLER FOR NOT FOUND / EXCEPTION,**最快**