本文補充 functions.db2 註冊腳本中關鍵子句的技術含義,並對整個「DB2遷移兼容性實現」系列進行總結。
| 例程 | 關鍵選項 | 技術含義 |
|---|---|---|
| TRUNCATE_TABLE | FENCED THREADSAFE | 運行在獨立進程中,進程崩潰不影響DB2引擎;線程安全支持高併發。 |
| MODIFIES SQL DATA | 聲明過程修改數據,優化器據此生成計劃。 | |
| NO DBINFO | 不傳遞DBINFO結構(無需訪問上下文信息)。 | |
| HOST_NAME | DBINFO | 必須:需訪問DBINFO獲取應用程序ID解析客戶端IP。 |
| DETERMINISTIC | 相同輸入必得相同輸出,優化器可緩存結果。 | |
| NO EXTERNAL ACTION | 無外部副作用(僅讀取系統信息)。 | |
| FENCED NOT THREADSAFE | 獨立進程但非線程安全(C庫gethostbyaddr非線程安全)。 | |
| CALL_PROCEDURE | NOT FENCED THREADSAFE | 運行在DB2引擎進程內(高性能),線程安全(需自行保證)。 |
| EXTERNAL ACTION | 有外部副作用(建立連接、執行CALL、提交事務)。 | |
| DISALLOW PARALLEL | 禁止並行執行(涉及事務邊界,並行會導致邏輯錯誤)。 | |
| NO DBINFO | 不需要上下文信息,參數已完整傳遞。 |
TRUNCATE_TABLE 以 IMPORT REPLACE 實現Oracle TRUNCATE 語義,性能損耗極低。HOST_NAME() 利用 DBINFO + C庫實現Sybase同名函數語義,透明兼容應用代碼。CALL_PROCEDURE 突破觸發器/UDF不可調用存儲過程的限制,保持業務邏輯零修改遷移。functions.sqc (含三個例程實現)bldrtn (跨平台自動化編譯鏈接)functions.db2 (冪等DDL,含DROP與CREATE)truncate_example.db2, host_name_example.db2, trig_calls_proc.db2, udf_calls_proc.db2所有文件可從「下載」區獲取。此套方案已在DB2 UDB V7/V8驗證,可直接應用於Oracle/Sybase/SQL Server向DB2的遷移項目,大幅降低應用層改造工作量。