CREATE OR REPLACE PROCEDURE sendNotification(url IN VARCHAR2, tblname IN VARCHAR2, order_id IN VARCHAR2) IS req UTL_HTTP.REQ; resp UTL_HTTP.RESP; err_msg VARCHAR2(100); tbl VARCHAR(60); BEGIN tbl:=SUBSTR(tblname, INSTR(tblname, '.', 1, 1)+1, 60); BEGIN req := UTL_HTTP.BEGIN_REQUEST(url||order_id||'&'||'table='||tbl); resp := UTL_HTTP.GET_RESPONSE(req); INSERT INTO nfresults VALUES(SYSDATE, tblname, resp.reason_phrase); UTL_HTTP.END_RESPONSE(resp); EXCEPTION WHEN OTHERS THEN err_msg := SUBSTR(SQLERRM, 1, 100); INSERT INTO nfresults VALUES(SYSDATE, tblname, err_msg); END; COMMIT; END; /
如“清單 1”所示,sendNotification 以 UTL_HTTP.BEGIN_REQUEST 函數發出的 HTTP 請求的形式向客戶端發送通知消息。此 URL 包含 ORDERS 表中已更改行的 order_id。然后,它使用 UTL_HTTP.GET_RESPONSE 獲取客戶端發出的響應信息。實際上,sendNotification 并不需要處理客戶端返回的整個響應,而是只獲取一個在 RESP 記錄的 reason_phrase 字段中存儲的簡短消息(描述狀態代碼)。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/