註解語法
| 類型 | 語法 | 範例 | 說明 |
| 單行註解 | -- | -- 這是單行註解 | 從 -- 到行尾皆為註解 |
| 多行註解 | /* ... */ | /* 這是 多行註解 */ | 可跨行,不可巢狀 |
使用範例
單行註解:說明查詢邏輯
-- 選擇列表中的欄位 'Student.sname' 無效,因為該欄位沒有包含在聚合函數或 GROUP BY 子句中
SELECT Student.sno, sname, AVG(grade) AS avg_g
FROM Student, SC
WHERE Student.sno = SC.sno
AND cno <> '008'
GROUP BY Student.sno -- 沒加 Student. 欄位 'sno' 不明確
HAVING MIN(grade) >= 60
ORDER BY avg_g DESC;
多行註解:暫時停用程式碼區塊
/*
把對 Student 表和 Course 表的全部權限授予用戶 U2 和 U3
GRANT ALL PRIVILEGES ON TABLE Student, Course TO U2, U3;
把對表 SC 的查詢權限授予所有用戶
GRANT SELECT ON TABLE SC TO PUBLIC;
把查詢 Student 表和修改學生學號的權限授給用戶 U4
GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;
把用戶 U4 修改學生學號的權限收回
REVOKE UPDATE(Sno) ON TABLE Student FROM U4;
*/
最佳實務
- 單行註解:行內說明、暫時停用單行、參數說明
- 多行註解:區塊說明、暫時停用大段程式碼、版權/作者資訊
- 不可巢狀:
/* /* 內層 */ 外層 */ 會在第一個 */ 結束,外層剩餘部分變成程式碼 → 語法錯誤
- 文件化註解:預存程序/函數開頭建議包含:用途、參數、回傳、作者、日期、修改歷程
進階:文件化註解範本
/*
-- =============================================
-- Author: 張三
-- Create date: 2023-01-15
-- Description: 計算客戶生命週期價值 (CLV)
-- Parameters: @CustomerId INT - 客戶 ID
-- Returns: DECIMAL(18,2) - CLV 值
-- Example: EXEC dbo.CalcCLV @CustomerId = 12345
-- History:
-- 2023-02-01 李四 新增 VIP 加權邏輯
-- 2023-03-10 王五 修正空值處理
-- =============================================
*/
CREATE PROCEDURE dbo.CalcCLV
@CustomerId INT
AS
BEGIN
-- 實作邏輯...
END