transact-sql 語言使用的流程控制命令與常見的程式語言類似主要有以下幾種控制命令。
4.6.1 if…else
其語法如下:
if 《條件表示式》
《命令列或程式塊》
[else [條件表示式]
《命令列或程式塊》]
其中《條件表示式》可以是各種表示式的組合,但表示式的值必須是邏輯值「真」或「假」。else子句是可選的,最簡單的if語句沒有else子句部分。if…else用來判斷當某一條件成立時執行某段程式,條件不成立時執行另一段程式。如果不使用程式塊,if或else只能執行一條命令。if…else可以進行巢狀。
例4-9
declare@x int,@y int,@z int
select @x=1,@y=2, @z=3
if@x>@y
print'x>y' --列印字串'x>y'
else if@y>@z
print'y>z'
else print'z>y'
執行結果如下
z>y
注意:在transact-sql中最多可巢狀32級。
4.6.2 begin…end
其語法如下:
begin
《命令列或程式塊》
end
begin…end用來設定乙個程式塊,將在begin…end內的所有程式視為乙個單元執行begin…end經常在條件語句,如if…else中使用。在begin…end中可巢狀另外的begin…end來定義另一程式塊。
end
case
when 《條件表示式》 then 《表示式》
when 《條件表示式》 then 《表示式》
[else 《表示式》]
endcase命令可以巢狀到sql命令中。
例4-10:調整員工工資,工作級別為「1」的上調8%,工作級別為「2」的上調7%,工作級別為「3」的上調6%,其它上調5%。
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注意:執行case子句時,只執行第乙個匹配的子名。
4.6.4 while…continue…break
其語法如下:
while 《條件表示式》
begin
《命令列或程式塊》
[break]
[continue]
[命令列或程式塊]
endwhile 命令在設定的條件成立時會重複執行命令列或程式塊。continue命令可以讓程式跳過continue 命令之後的語句,回到while 迴圈的第一行命令。break 命令則讓程式完全跳出迴圈,結束while 命令的執行。while 語句也可以巢狀。
例4-11:
declare @x int @y int @c int
例4-11:
declare @x int, @y int, @c int
select @x = 1, @y=1
while @x < 3
begin
print @x --列印變數x 的值
while @y < 3
begin
select @c = 100*@ x+ @y
print @c --列印變數c 的值
select @y = @y + 1
endselect @x = @x + 1
select @y = 1
end執行結果如下
4.6.5 waitfor
其語法如下:
waitfor
waitfor 命令用來暫時停止程式執行,直到所設定的等待時間已過或所設定的時間已到才繼續往下執行。其中『時間』必須為datetime 型別的資料,如:『11:15:27』,
但不能包括日期各關鍵字含義如下:
delay 用來設定等待的時間最多可達24 小時; time 用來設定等待結束的時間點; errorexit 直到處理非正常中斷; proces***it 直到處理正常或非正常中斷; mirrorexit 直到映象裝置失敗。
例4-12 等待1 小時2 分零3 秒後才執行select 語句
waitfor delay 』01:02:03』
select * from employee
例4-13:等到晚上11 點零8 分後才執行select 語句
waitfor time 』23:08:00』
select * from employee
4.6.6 goto
語法如下:
goto 識別符號
goto 命令用來改變程式執行的流程,使程式跳到標有識別符號的指定的程式行再繼續往下執行。作為跳轉目標的識別符號可為
數字與字元的組合,但必須以「:」結尾,如『12:』或『a_1:』。在goto 命令列,識別符號後不必跟「:」。
例4-14 分行列印字元『1』、『2』、『3』、『4』、『5』
declare @x int
select @x = 1
label_1
print @x
select @x = @x + 1
while @x < 6
goto label_1
4.6.7 return
語法如下
return [整數值]
return 命令用於結束當前程式的執行,返回到上乙個呼叫它的程式或其它程式。在括號內可指定乙個返回值。
例4-15
declare @x int @y int
select @x = 1 @y = 2
if x>y
return 1
else
return 2
如果沒有指定返回值,sql server 系統會根據程式執行的結果返回乙個內定值,如
表4-5 所示。
如果執行過程產生了多個錯誤,sql server系統將返回絕對值最大的數值;如果此時使用者此時定義了返回值,則以返回使用者定義的值。return語句不能返回null值。
本文**
MS SQL入門基礎 SQL 流程控制命令
transact sql 語言使用的流程控制命令與常見的程式語言類似主要有以下幾種控制命令。4.6.1 if else 其語法如下 if 條件表示式 命令列或程式塊 else 條件表示式 命令列或程式塊 其中 條件表示式 可以是各種表示式的組合,但表示式的值必須是邏輯值 真 或 假 else子句是可...
MS SQL入門基礎 SQL 變數
transact sql中可以使用兩種變數,一種是區域性變數 local variable 另外一種是全域性變數 global variable 4.4.1 區域性變數 區域性變數是使用者可自定義的變數,它的作用範圍僅在程式內部。在程式中通常用來儲存從表中查詢到的資料,或當作程式執行過程中暫存變數使...
MS SQL入門基礎 sql作業
作業是指被定義的多步執行的任務,每一步都是可能執行的transact sql 語句,代表乙個任務。作業是典型的規劃任務和自動執行任務。資料庫的備份和恢復 資料的複製 資料的匯入 匯出等都可以被定義成作業,然後在規劃的時間由sql server agent 來自動完成。建立乙個作業的執行步驟為 1 啟...