命名原則
- **禁止使用
sp_ 前綴**:系統預存程序皆以 sp_ 開頭,使用者程序若同樣命名,SQL Server 會優先在 master 資料庫搜尋,導致額外查找開銷,效能略微下降。
- **統一前綴**:建議使用
usp_ (User Stored Procedure) 或 proc_ 作為使用者預存程序前綴,明確區分系統與使用者物件。
命名語法結構
[前綴] [主資料表名] By [欄位名(可選)] [動作]
[ usp_ ] [ TableName ] [ ByColumn ] [ Action ]
四大組成元素說明
| 代碼 | 元素 | 說明 | 範例 |
| 1 | 前綴 | 統一 usp_,不可用 sp_ | usp_ |
| 2 | 主資料表名 | 核心操作的實體表名稱,PascalCase | Customer, OrderDetail |
| 3 | By + 欄位名 | 輸入參數關鍵欄位 (非主鍵時),可省略 | ByEmail, ByStatus |
| 4 | 動作 | 業務動作動詞,標準化動詞表見下 | Select, Insert, Update, Delete |
標準動作動詞對照表
| 動作 | 動詞 | 適用場景 |
| 查詢單筆/清單 | Select, Get, List | usp_CustomerSelect, usp_OrderListByStatus |
| 新增 | Insert, Create, Add | usp_ProductInsert |
| 修改 | Update, Modify, Edit | usp_OrderUpdateByID |
| 刪除 | Delete, Remove, Purge | usp_LogDeleteByDate |
| 批次/複合 | Process, Batch, Sync | usp_OrderProcess |
| 統計/彙總 | Stats, Summary, Report | usp_SalesStatsByMonth |
完整命名範例
| 功能描述 | 預存程序名稱 |
| 依主鍵查詢客戶 | usp_CustomerSelect |
| 依 Email 查詢客戶 | usp_CustomerSelectByEmail |
| 新增訂單 | usp_OrderInsert |
| 依狀態更新訂單 | usp_OrderUpdateByStatus |
| 依日期刪除舊日誌 | usp_LogDeleteByDate |
| 月銷售統計報表 | usp_SalesStatsByMonth |
額外規範建議
- 結構描述前綴:多結構描述環境建議加入 Schema 前綴,如
dbo.usp_Sales_OrderInsert、rpt.usp_SalesStatsByMonth。
- 參數命名:
@ParamName 使用 PascalCase,輸出參數加 Out 後綴 (如 @TotalCountOut)。
- 避免保留字:勿使用
Order, Group, Key 等做為程序名稱一部分,除非加上方括號。
- 版本管理:重大變更建議新增版本後綴
_v2,舊版標記棄用,避免直接覆蓋影響相依程式。
- 文件化:使用擴充屬性 (
sp_addextendedproperty) 記錄用途、參數、範例、作者、修改歷程。
檢核清單 (Code Review 用)
- [ ] 前綴為
usp_ (非 sp_)?
- [ ] 主資料表名稱正確且 PascalCase?
- [ ] By 欄位名是否必要?
- [ ] 動作動詞符合標準表?
- [ ] 無保留字衝突?
- [ ] 已加入擴充屬性文件?