WebSphere Federation Server 使用「昵稱」代理遠程表,聯邦過程則代理遠程存儲過程。創建與調用極簡單:
CREATE PROCEDURE my_fed_proc SOURCE rem_schema.rem_proc FOR SERVER s;
CALL my_fed_proc(3, ?);
直接用 JDBC 等客戶端介面需自行處理分布式事務、安全、位置感知、異構差異。Web 服務雖解決客戶端庫,仍需處理其餘。聯邦服務器將除客戶端庫外所有層面虛擬化為 SQL 介面。結合 Web 服務提供者可進一步隱藏 SQL 客戶端。
READS SQL DATA 或 MODIFIES SQL DATA 存取級別。CALL RESOLUTION IMMEDIATE。MODIFIES SQL DATA 聯邦過程;發出 SAVEPOINT 後亦不可調用。COMMIT/ROLLBACK,否則可能數據不一致。ALTER PROCEDURE。CREATE PROCEDURE (Sourced) 支援:
SOURCE 三部份名稱中間為包名。NUMBER OF PARAMETERS;同名同參數數量用 UNIQUE ID (Oracle ALL_ARGUMENTS.OVERLOAD)。WITH RETURN TO CALLER/CLIENT。MODIFIES SQL DATA, NOT DETERMINISTIC, EXTERNAL ACTION)。RETURN TO CLIENT 穿透嵌套,RETURN TO CALLER 僅調用者可用。RETURN TO CLIENT,游標參數僅源端可用。WITH RETURN TO CALLER/CLIENT 映射語義。使用預設轉發類型映射。Oracle 無精度/長度類型映射為最大長度字串或 DOUBLE。可用 CREATE TYPE MAPPING 覆蓋參數映射,但結果集列映射不受影響。
SYSCAT.ROUTINES:聯邦過程信息 (源名、遠程過程/模式名)。SYSCAT.ROUTINEPARMS:參數信息(首查)。SYSCAT.ROUTINEOPTIONS:選項值 (源名、參數數量、REFCURSOR 數)。SYSCAT.ROUTINEPARMOPTIONS:參數選項 (遠程參數名/類型)。CALL 調用,整數返回碼映射至 GET DIAGNOSTICS DB2_RETURN_STATUS (Sybase 僅無結果集時返回)。EXECUTE 權限與有效用戶映射(間接調用亦需)。GRANT/REVOKE 控制聯邦過程權限。DROP PROCEDURE 刪除本地編目條目,不影響源端,依賴包失效。券商 XYZ 的 Oracle 包 StockOptions:
StockInfo(username IN CHAR) 返回用戶持股結果集 (數量、名稱),Oracle 中常由調用者使用 → 聯邦過程用 WITH RETURN TO CALLER。StockInfo(accountNum IN INTEGER) 返回持股數量、市值、名稱,Oracle 中常傳給客戶端 → 聯邦過程用 WITH RETURN TO CLIENT。Sybase 過程:StockQuote(stockName IN CHAR, transDate IN DATE) 以 OUT 參數返回報價。Sybase OUT 參數在 DB2 視為 INOUT,調用時可能需提供初始值。