<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
T-SQL中用來編寫流程控制模組的語句有:BEGIN...AND語句、IF...ELSE語句、CASE語句、WHILE語句、GOTO語句、BREAK語句、WAITFOR語句和RETURN語句。
一個批次處理段是由一個或者多個語句組成的一個批次處理,之所以叫批次處理是因為所有語句一次性被提交到一個SQL範例。
DECLARE @i int; SET @i = 1; GO --分批了 PRINT @i --@i在這個批裡未定義
語句塊是多條Transact-SQL語句組成的程式碼段,從而可以執行一組Transact-SQL語句。經常與while或if...else組合起來使用,可以相互巢狀。
範例:
DECLARE @count INT SELECT @count = 0 WHILE @count < 10 BEGIN PRINT 'count = ' + CONVERT(VARCHAR(10), @count) SELECT @count = @count + 1 END PRINT 'loop finished, count = ' + CONVERT(VARCHAR(10), @count)
IF...ELSE語句用於在執行一組程式碼之前進行條件判斷,根據判斷的結果執行不同的程式碼。IF...ELSE語句語句對布林表示式進行判斷,如果布林表示式返回為TRUE,則執行IF關鍵字後面的語句塊;如果布林表示式返回FALSE,則執行 ELSE關鍵字後面的語句塊。
語法:
IF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ]
範例:
DECLARE @score INT SET @score = 100 IF @score >= 60 PRINT '及格' ELSE PRINT '不及格'
CASE語句是多條件分支語句,相比IF...ELSE語句,CASE語句進行分支流程控制可以使程式碼更加清晰,易於理解。CASE語句根據表示式邏輯值的真假來決定執行的程式碼流程。
語法:
CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END
或
CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END
範例:
DECLARE @score INT SET @score = 100 SELECT CASE @score WHEN 100 THEN '滿分' WHEN 60 THEN '及格' END AS '成績'
或者
DECLARE @score INT SET @score = 100 SELECT CASE WHEN @score >= 90 THEN '優秀' WHEN @score >= 80 THEN '良好' WHEN @score >= 70 THEN '中等' WHEN @score >= 60 THEN '及格' ELSE '不及格' END AS '成績'
WHILE語句根據條件重複執行一條或多條T-SQL程式碼,只要條件表示式為真,就回圈執行語句。可以使用 BREAK 和 CONTINUE 關鍵字在迴圈內部控制 WHILE 迴圈中語句的執行。
語法:
WHILE Boolean_expression { sql_statement | statement_block | BREAK | CONTINUE }
引數:
DECLARE @i int; SET @i = 0; WHILE(@i < 10) BEGIN SET @i = @i + 1; IF(@i % 2 = 0) BEGIN PRINT('跳過2的倍數' + CAST(@i AS varchar)); CONTINUE; END ELSE IF (@i = 7) BEGIN PRINT('到' + CAST(@i AS varchar) + '就跳出迴圈'); BREAK; END PRINT @i; END
RETURN語句用於使程式從一個查詢、儲存過程或批次處理中無條件返回,其後面的語句不再執行。如果在儲存過程中使用return語句,那麼此語句可以指定返回給呼叫應用程式、批次處理或過程的負整數;如果沒有為return指定整數值,那麼該儲存過程將返回0。
BEGIN PRINT(1); PRINT(2); RETURN; PRINT(3); --在RETURN之後的程式碼不會被執行,因為會跳過當前批次處理 END GO BEGIN PRINT(4); END
GOTO語句可以使程式無條件跳轉到指定的程式執行點,增加了程式設計的靈活性。但破壞了程式的結構化,使程式結構變得複雜而且難以測試。
使用說明:語句識別符號可以是數位或者字母的組合,但必須以":"結束。而在GOTO語句後的識別符號不必帶":"。
注意事項:GOTO語句和跳轉標籤可以在儲存過程、批次處理或語句塊中的任何地方使用,但不能超出批次處理的範圍。
DECLARE @i int; SET @i = 1; SET @i = 2; SET @i = 3; SET @i = 4; GOTO ME; SET @i = 5; --這行被跳過了 SET @i = 6; --這行被跳過了 SET @i = 7; --這行被跳過了 ME:PRINT('跳到我了?'); PRINT @i
輸出結果如下:
跳到我了? 4
waitfor語句用於掛起語句的執行,直到指定的時間點或者指定的時間間隔。
語法:
WAITFOR { DELAY 'time_to_pass' | TIME 'time_to_execute' | [ ( receive_statement ) | ( get_conversation_group_statement ) ] [ , TIMEOUT timeout ] }
在waitfor語句中不能包含開啟遊標,定義檢視這樣的操作。在包含事務的語句中不要使用waitfor語句,因為waitfor語句在時間點或時間間隔執行期間將一直擁有物件的鎖,當事務中包含waitfor語句,事務的其他語句又需要存取被鎖住的資料物件事就容易發生死鎖現象。
DELAY引數指定了等待的時間段。不能指定天數,只能指定小時數、分鐘數和秒數。允許延遲的最長時間為24小時。
WAITFOR DELAY '01:00'
將執行WAITFOR語句前的任何程式碼,然後到達WAITFOR語句,停止1小時,之後繼續執行下一條語句中的程式碼。
TIME引數指定到達指定時間的等待時間。
WAITFOR TIME '01:00'
將執行WAITFOR語句前的任何程式碼,然後到達WAITFOR語句,直到凌晨1點停止執行,之後執行WAITFOR語句後的下一條語句。
到此這篇關於SQL SERVER流程控制語句的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45