国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SQL 流程控制命令

2024-07-21 02:13:08
字體:
來源:轉載
供稿:網友
transact-sql 語言使用的流程控制命令與常見的程序設計語言類似主要有以下幾種控制命令。

4.6.1 if…else
其語法如下:
if <條件表達式>
<命令行或程序塊>
[else [條件表達式]
<命令行或程序塊>]
其中<條件表達式>可以是各種表達式的組合,但表達式的值必須是邏輯值“真”或“假”。else子句是可選的,最簡單的if語句沒有else子句部分。if…else用來判斷當某一條件成立時執行某段程序,條件不成立時執行另一段程序。如果不使用程序塊,if或else只能執行一條命令。if…else可以進行嵌套。

例4-9
[email protected] int,@y int,@z int
select @x=1,@y=2, @z=3
[email protected]>@y
  print'x>y' --打印字符串'x>y'
else [email protected]>@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來定義另一程序塊。

4.6.3 case
case 命令有兩種語句格式:
case <運算式>
when <運算式>then<運算式>

when<運算式>then<運算式>
[else<運算式>]
end

case
when <條件表達式> then <運算式>
when <條件表達式> then <運算式>
[else <運算式>]
end
case命令可以嵌套到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]
[命令行或程序塊]
end
while 命令在設定的條件成立時會重復執行命令行或程序塊。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
end
select @x = @x + 1
select @y = 1
end
運行結果如下
1
101
102
2
201
202

4.6.5 waitfor
其語法如下:
waitfor {delay <‘時間’> | time <‘時間’>
| errorexit | processexit | mirrorexit}
waitfor 命令用來暫時停止程序執行,直到所設定的等待時間已過或所設定的時間已到才繼續往下執行。其中‘時間’必須為datetime 類型的數據,如:‘11:15:27’,
但不能包括日期各關鍵字含義如下:

  • delay 用來設定等待的時間最多可達24 小時;
  • time 用來設定等待結束的時間點;
  • errorexit 直到處理非正常中斷;
  • processexit 直到處理正?;蚍钦V袛啵?
  • 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值。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和静县| 阿勒泰市| 肇东市| 凤阳县| 寿光市| 拉孜县| 韶关市| 宜州市| 临邑县| 霍林郭勒市| 行唐县| 壤塘县| 林口县| 楚雄市| 平江县| 安平县| 桂阳县| 贡觉县| 平乡县| 东丽区| 东台市| 衡东县| 大竹县| 吉隆县| 孝感市| 株洲县| 宁乡县| 大庆市| 临江市| 德惠市| 连云港市| 宁南县| 丰县| 夹江县| 榆树市| 隆德县| 凤翔县| 乌苏市| 汪清县| 柳林县| 原平市|