在 SQL 程式設計中,控制流程語句是實現複雜業務邏輯的關鍵。掌握這些基礎語句,能讓你編寫出更靈活、更強大的資料庫程式碼。
IF...ELSE 是最基礎的條件控制結構,根據布林表達式的結果執行不同的程式碼區塊。
IF 布林表達式
BEGIN
{SQL 語句或語句區塊}
END
ELSE
BEGIN
{SQL 語句或語句區塊}
END
應用場景:根據條件動態執行不同的查詢或更新操作。
用於將多條 SQL 語句封裝成一個邏輯單元,常配合 IF、WHILE 等控制語句使用。
BEGIN
{sql 語句或語句區塊}
END
WHILE 迴圈支援重複執行,配合 BREAK 跳出迴圈、CONTINUE 跳過本次迴圈。
範例:計算 1 到 10 之間奇數的總和
DECLARE @I smallint, @sum smallint
SELECT @i = 0, @sum = 0
WHILE @i < 10
BEGIN
SELECT @i = @i + 1
IF @i > 10 BREAK
IF (@i % 2) = 0 CONTINUE
ELSE SELECT @sum = @sum + @i
END
SELECT @sum
控制語句在特定時間或延遲指定間隔後執行。
WAITFOR { DELAY 'time' | TIME 'time' }
WAITFOR TIME '10:00' — 在上午 10:00 執行WAITFOR DELAY '1:00' — 延遲 1 小時後執行從預存程序或批次中返回整數狀態碼:RETURN [整數表達式]
比較單一運算式與多個值:
CASE 運算式
WHEN 運算式1 THEN 結果1
WHEN 運算式2 THEN 結果2
...
ELSE 預設結果
END
範例:
SELECT
name = CONVERT(varchar(15), au_lname),
contract = CASE contract
WHEN 0 THEN 'invalid contract.'
WHEN 1 THEN 'valid contract.'
END
FROM authors
評估一組布林運算式:
CASE
WHEN 布林運算式1 THEN 結果1
WHEN 布林運算式2 THEN 結果2
...
ELSE 預設結果
END