T-SQL 提供豐富的流程控制結構,支援條件判斷、迴圈控制、程式區塊定義與等待機制,功能與一般程式語言相似。本文系統整理 IF...ELSE、BEGIN...END、CASE、WHILE...CONTINUE...BREAK、WAITFOR 等核心控制命令的語法、嵌套規則與實戰範例。
語法結構:
IF <條件運算式>
<命令列或程式區塊>
[ELSE [條件運算式]
<命令列或程式區塊>]
DECLARE @x INT, @y INT, @z INT
SELECT @x=1, @y=2, @z=3
IF @x > @y
PRINT 'x>y'
ELSE IF @y > @z
PRINT 'y>z'
ELSE
PRINT 'z>y'
執行結果: z>y
語法:
BEGIN
<命令列或程式區塊>
END
將多條陳述式視為單一執行單元,常搭配 IF...ELSE 使用。支援嵌套定義多層程式區塊。
兩種語法格式:
CASE <運算式>
WHEN <運算式> THEN <運算式>
...
[ELSE <運算式>]
END
CASE
WHEN <條件運算式> THEN <運算式>
...
[ELSE <運算式>]
END
可嵌入 SQL 命令中。執行時僅執行第一個符合條件的分支。
USE pangu
UPDATE employee
SET e_wage = CASE
WHEN job_level = '1' THEN e_wage * 1.08
WHEN job_level = '2' THEN e_wage * 1.07
WHEN job_level = '3' THEN e_wage * 1.06
ELSE e_wage * 1.05
END
語法:
WHILE <條件運算式>
BEGIN
<命令列或程式區塊>
[BREAK]
[CONTINUE]
[<命令列或程式區塊>]
END
DECLARE @x INT, @y INT, @c INT
SELECT @x = 1, @y = 1
WHILE @x < 3
BEGIN
PRINT @x
WHILE @y < 3
BEGIN
SELECT @c = 100 * @x + @y
PRINT @c
SELECT @y = @y + 1
END
SELECT @x = @x + 1
SELECT @y = 1
END
執行結果:
1
101
102
2
201
202
語法:WAITFOR {DELAY '時間' | TIME '時間' | ERROREXIT | PROCESSEXIT | MIRROREXIT}