主體可包含任意 T-SQL 陳述式,但不得出現:CREATE DEFAULT, CREATE TRIGGER, CREATE PROCEDURE, CREATE VIEW, CREATE RULE。
@ 開頭,含字元與數字DECLARE)SELECT (可從表取值或指派常數)SELECT @var1=32, @var2='MyAge'IF (boolean_expr)
{statements}
ELSE
{statements}
多行陳述式需用 BEGIN...END 包裹。
WHILE (boolean_expr)
BEGIN
statement(s)
BREAK -- 跳出迴圈 (到 END 之後)
statement(s)
CONTINUE -- 回到迴圈開頭 (BEGIN 之後)
END
巢狀迴圈注意: 內層 BREAK 只跳出內層,外層繼續執行。
打破循序執行,跳轉至標籤。需搭配標籤使用。
DECLARE @num INT IF @num = 0 GOTO Err ELSE BEGIN PRINT 'authors found'; SELECT * FROM authors; GOTO Last END Err: PRINT 'no authors found' Last: PRINT 'Finish execution'
無條件結束預存程序,後續陳述式不執行。可回傳整數狀態值 (不可為 NULL)。
系統回傳碼對照:
| 值 | 說明 | 值 | 說明 |
|---|---|---|---|
| 0 | 成功 | -8 | 非致命內部問題 |
| -1 | 遺漏物件 | -9 | 達到系統極限 |
| -2 | 資料類型錯誤 | -10 | 致命內部不一致 |
| -3 | 死鎖犧牲者 | -11 | 致命內部不一致 |
| -4 | 權限錯誤 | -12 | 表/索引損壞 |
| -5 | 語法錯誤 | -13 | 資料庫損壞 |
| -6 | 混合使用者錯誤 | -14 | 硬體錯誤 |
| -7 | 資源錯誤 (空間不足等) |
需一列列處理時使用游標,五步驟:宣告 → 開啟 → 擷取 → 關閉 → 釋放 (詳細參見第七篇)。