將常用或複雜的 SQL 作業預先撰寫、編譯並以指定名稱儲存。後續只需 EXECUTE 呼叫即可自動完成,無需重複編寫 SQL。
UPDATE/INSERT/QUERY/DELETE 結合交易控制,確保原子性| 類型 | 前綴 | 用途 |
|---|---|---|
| 系統預存程序 | sp_ | 系統設定、資訊查詢、管理工作(如 sp_help) |
| 擴展預存程序 | xp_ | 呼叫作業系統功能(如 xp_cmdshell 'ping 10.8.16.1') |
| 使用者自訂程序 | 無固定 | 業務邏輯核心,開發主力 |
CREATE PROCEDURE 程序名
[@參數 資料型別] [OUTPUT]
[WITH {RECOMPILE | ENCRYPTION}]
AS
SQL_陳述式
OUTPUT:標記此參數可回傳值給呼叫端WITH RECOMPILE:每次執行強制重新編譯(適用參數嗅探嚴重場景)WITH ENCRYPTION:加密程序本文,防止 sp_helptext 檢視動態 SQL 每次執行皆需編譯、無法預先驗證語法、權限管理困難、易受 SQL 注入攻擊。預存程序在效能、安全、維護性上全面優於動態 SQL。
掌握核心觀念與語法,即可開始撰寫高效、安全、可維護的資料庫程式碼。