定義
預存程序 是為完成特定功能的 SQL 語句集,經編譯優化後儲存於資料庫,應用端透過名稱與參數呼叫執行。
四大核心優勢
- 效能優異:僅建立時編譯一次,後續呼叫免重複編譯,減少 CPU 開銷與網路往返。
- 封裝複雜邏輯:多表
UPDATE/INSERT/DELETE/QUERY 結合交易控制,確保資料一致性。
- 重用性高:共用邏輯集中維護,減少開發工作量。
- 安全性強:可精細授權
EXECUTE 權限,隱藏底層資料表結構,防 SQL Injection。
進階:Package 封裝
Oracle 允許將相關程序/函數組成 Package,公開規格、隱藏主體,進一步提升模組化與效能(整體載入共享池)。
適用場景建議
- 高頻、固定模式的業務邏輯(如結帳、庫存扣減)。
- 需原子性的多表異動。
- 大量資料搬移/轉換(ETL)。
- 對外提供 API,不願暴露資料模型。
注意事項
- 避免在程序中進行大量複雜運算(改用 Java/C++ 外部程序)。
- 合理使用
DETERMINISTIC、RESULT_CACHE 提升函數效能。
- 版本控管:以腳本管理 DDL,納入 CI/CD 流程。