1.語句塊(BEGIN…END)
語句塊文法如下:
BEGIN
<SQL語句或程式塊>
END
BEGIN…END用來設定一個語句塊,可以將多條Transact-SQL語句封裝起來構成一個語句塊,在處理時,整個語句塊被視為一條語句。BEGIN…END經常用在條件陳述式中,如IF…ELSE 或WHILE迴圈中。BEGIN…END語句可以嵌套使用。
2.判斷語句(IF…ELSE)
通常電腦是按順序執行程式中的語句,但是在許多情況下,語句執行的順序以及是否執行依賴於程式啟動並執行中間結果,在這種情況下,必鬚根據某個變數或運算式的值作出判斷,以決定執行哪些語句或不執行哪些語句。這時可以利用IF…ELSE語句作出判斷,選擇執行某條語句或語句塊。
判斷語句文法如下:
IF <條件運算式>
<命令列或語句塊1>
[ ELSE [條件運算式]
<命令列或語句塊2> ]
3 檢測語句(IF…EXISTS)
IF…EXISTS語句用於檢測資料是否存在,而不考慮與之匹配的行數。對於存在性檢測而言,使用IF…EXISTS要比使用COUNT(*)>0好,效率更高,因為只要找到第一個匹配的行,伺服器就會停止執行SELECT語句。
檢測語句文法如下:
IF [NOT] EXISTS (SELECT查詢語句)
<命令列或語句塊1>
[ELSE]
<命令列或語句塊2>
4 多分支判斷語句(CASE…WHEN)
CASE…WHEN結構提供了比IF…ELSE結構更多的選擇和判斷機會,使用它可以很方便地實現多分支判斷,從而避免多重IF…ELSE語句嵌套使用。多分支判斷語句CASE…WHEN文法有兩種格式:
第一種格式文法如下:
CASE <算術運算式>
WHEN <算術運算式> THEN <運算式>
WHEN <算術運算式> THEN <運算式>
[ELSE <算術運算式>]
END
第二種格式文法如下:
CASE
WHEN <條件運算式> THEN <運算式>
WHEN <條件運算式> THEN <運算式>
[ELSE <運算式>]
END
5 迴圈語句(WHILE)
迴圈語句可以設定重複執行SQL語句或語句塊的條件,只要指定的條件為TRUE(條件成立),就重複執行語句。
迴圈語句文法如下:
WHILE <條件運算式>
BEGIN
<命令列或程式塊>
[BREAK]
[CONTINUE]
[命令列或程式塊]
END
6 跳躍陳述式(GOTO)
使用跳躍陳述式GOTO可以改變程式執行的流程,使程式跳到標有標識符的指定程式行,再繼續往下執行,作為跳轉目標的標識符可以是數字與字元的組合,但必須以“:”結尾。
跳躍陳述式文法如下:
GOTO 標識符:
7 返回語句(RETURN)
返回語句用於結束當前程式的執行返回到上一個調用它的程式或其它程式,在括弧內可指定一個傳回值。返回語句可使程式從批處理、預存程序、觸發器中無條件退出,不再執行RETURN之後的任何語句。返回語句文法如下:
RETURN ([整數值])
8 延期執行語句(WAIT…FOR)
WAITFOR語句用來暫時停止程式執行,直到所設定的等待時間已過或所設定的時刻已到,才繼續往下執行。其中時間必須為DATETIME 類型的資料,延遲時間和時刻均採用“HH:MM:SS”格式,在WAITFOR語句中不能指定日期,並且時間長度不能超過24小時。
延期執行語句文法如下:
WAITFOR { DELAY <‘時間'> | TIME <‘時間'> }
sql_statement
DELAY:用來設定等待的時間間隔,最多可達24 小時。
TIME:用來設定等待結束的時間點。
sql_statement:設定的等待時間已過或所設定的時刻已到,要繼續執行的SQL動作陳述式。