首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 註解與條件控制語句執行語法詳解

     編輯:關於SqlServer

良好的註解習慣讓複雜 SQL 可讀、可維護;條件控制語句讓腳本具備動態邏輯。本文詳細說明 SQL Server (T-SQL) 的註解語法與 IF...ELSE、BEGIN...END 區塊用法。

註解語法

類型語法範圍範例
單行註解--從 -- 到該行結尾SELECT GETDATE() -- 取得目前日期時間
多行註解/* ... */跨行,可嵌套(需相容性層級 130+)/* 此區塊計算月銷售總額 */ SELECT SUM(Amount) FROM Sales WHERE SaleDate >= '2024-01-01';

實用技巧

  • 暫時停用程式碼:用 /* ... */ 包裹整段,除錯時快速切換。
  • 文件化參數/回傳值:預存程序開頭加上標準註解區塊(用途、參數、回傳、範例、修改記錄)。
  • 避免在字串常值中出現 -- 或 /*,以免被誤判為註解開頭。

條件控制:IF...ELSE

基本語法

IF Boolean_expression
    { sql_statement | statement_block }
[ ELSE
    { sql_statement | statement_block } ]

關鍵規則

  • 無 THEN 關鍵字:T-SQL IF 後直接接陳述式,加 THEN 會報錯。
  • 單陳述式可省略 BEGIN/END,但建議永遠使用區塊,避免日後擴充忘記加區塊導致邏輯錯誤。
  • 巢狀 IF:需用 BEGIN...END 明確界定層級。

範例

-- 簡單 IF
IF (SELECT COUNT(*) FROM Authors) > 10
    PRINT N'作者超過 10 位!';

-- 區塊 IF...ELSE
IF DATENAME(MONTH, GETDATE()) = N'July'
BEGIN
    PRINT N'現在是七月。';
    PRINT N'祝您七月愉快!';
END
ELSE
BEGIN
    PRINT N'現在不是七月。';
END;

-- 巢狀:依銷售額給予不同折扣
DECLARE @Sales MONEY = 15000;
IF @Sales >= 10000
BEGIN
    IF @Sales >= 20000
        PRINT N'折扣 15%';
    ELSE
        PRINT N'折扣 10%';
END
ELSE
    PRINT N'無折扣';

進階控制流程語句

語句用途範例
BEGIN...END定義陳述式區塊配合 IF/WHILE 使用
WHILE迴圈WHILE @i < 10 BEGIN ... SET @i += 1; END
BREAK / CONTINUE跳出/跳過本次迴圈在 WHILE 區塊內使用
RETURN結束預存程序/批次,回傳整數狀態碼IF @Err <> 0 RETURN -1;
GOTO label無條件跳轉(慎用)GOTO ErrorHandler;
TRY...CATCH結構化錯誤處理 (SQL 2005+)捕捉執行錯誤、記錄、回滾交易
THROW重新拋出/自訂錯誤 (SQL 2012+)THROW 50001, N'自訂錯誤', 1;

最佳實務建議

  1. 所有預存程序/腳本開頭加上標準註解區塊。
  2. IF/WHILE 永遠搭配 BEGIN...END,即使只有一行。
  3. 錯誤處理統一用 TRY...CATCH,配合 XACT_STATE() 判斷交易狀態決定回滾/提交。
  4. 避免 GOTO,改用結構化邏輯。
  5. 變數命名採用 @PascalCase 或 @camelCase,統一團隊風格。

註解與控制流程是 SQL 程式可讀性與健壯性的基石,養成好習慣,團隊協作與長期維護將事半功倍。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved