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

T-SQL BEGIN...END 區塊:控制流程分組與巢狀結構完整指南

     編輯:關於SqlServer

語法與功能

BEGIN ... END 為 T-SQL 控制流程關鍵字,用於將多條陳述式包裝成單一邏輯區塊,使其可作為單一單元執行(如搭配 IF...ELSE、WHILE 等流程控制)。

標準語法

BEGIN
    { sql_statement | statement_block }
END

參數說明

  • sql_statement:任何有效的 Transact-SQL 陳述式
  • statement_block:以 BEGIN...END 定義的巢狀陳述式群組

重要特性

  • 允許巢狀:BEGIN...END 區塊可多層嵌套
  • 批次限制:雖然區塊內可放置所有 T-SQL 陳述式,但部分陳述式(如 CREATE PROCEDURE、CREATE VIEW、SET SHOWPLAN_TEXT 等)不得與其他陳述式同批次執行

實務範例:觸發器中的條件式回滾

USE pubs;
GO
CREATE TRIGGER deltitle ON titles FOR DELETE AS
IF (SELECT COUNT(*) FROM deleted, sales WHERE sales.title_id = deleted.title_id) > 0
BEGIN
    ROLLBACK TRANSACTION;
    PRINT 'You can''t delete a title with sales.';
END

若無 BEGIN...END,IF 僅作用於緊隨其后的單一陳述式(ROLLBACK),PRINT 將無條件執行,導致邏輯錯誤。

最佳實務建議

  • 習慣在流程控制(IF/WHILE/CASE)中使用 BEGIN...END,即使僅有一條陳述式,提升可讀性與維護性
  • 避免在同一批次混合 DDL 與 DML 陳述式
  • 善用縮排與註解標示區塊層級
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved