標籤:style blog io ar color 使用 sp for strong
T-SQL中用來編寫流程式控制制模組的語句有:BEGIN...AND語句、IF...ELSE語句、CASE語句、WHILE語句、GOTO語句、BREAK語句、WAITFOR語句和RETURN語句。
1. BEGIN...AND語句
語句塊是多條Transact-SQL語句組成的程式碼片段,從而可以執行一組Transact-SQL語句。BEGIN和END是流程控制語言的關鍵字。BEGIN...END語句塊通常包含在其他控制流程程中,用來完成不同流程中有差異的代碼功能。
樣本:
DECLARE @count INTSELECT @count = 0WHILE @count < 10BEGIN PRINT ‘count = ‘ + CONVERT(VARCHAR(10), @count) SELECT @count = @count + 1ENDPRINT ‘loop finished, count = ‘ + CONVERT(VARCHAR(10), @count)
執行結果:
count = 0count = 1count = 2count = 3count = 4count = 5count = 6count = 7count = 8count = 9loop finished, count = 10
2. IF...ELSE語句
IF...ELSE語句用於在執行一組代碼之前進行條件判斷,根據判斷的結果執行不同的代碼。IF...ELSE語句語句對布林運算式進行判斷,如果布林運算式返回為TRUE,則執行IF關鍵字後面的語句塊;如果布林運算式返回FALSE,則執行 ELSE關鍵字後面的語句塊。
文法:
IF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ]
樣本:
DECLARE @score INTSET @score = 100IF @score >= 60 PRINT ‘及格‘ELSE PRINT ‘不及格‘
3. CASE語句
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 INTSET @score = 100SELECT CASE @score WHEN 100 THEN ‘滿分‘ WHEN 60 THEN ‘及格‘ END AS ‘成績‘
DECLARE @score INTSET @score = 100SELECT CASE WHEN @score >= 90 THEN ‘優秀‘ WHEN @score >= 80 THEN ‘良好‘ WHEN @score >= 70 THEN ‘中等‘ WHEN @score >= 60 THEN ‘及格‘ ELSE ‘不及格‘ END AS ‘成績‘
4. WHILE語句
WHILE語句根據條件重複執行一條或多條T-SQL代碼,只要條件運算式為真,就迴圈執行語句。可以使用 BREAK 和 CONTINUE 關鍵字在迴圈內部控制 WHILE 迴圈中語句的執行。
文法:
WHILE Boolean_expression { sql_statement | statement_block | BREAK | CONTINUE }
參數:
Boolean_expression:返回 TRUE 或 FALSE 的運算式。 如果布林運算式中含有 SELECT 語句,則必須用括弧將 SELECT 語句括起來。
{sql_statement | statement_block}:Transact-SQL 陳述式或用語句塊定義的語句分組。 若要定義語句塊,請使用控制流程關鍵字 BEGIN 和 END。
BREAK:導致從最內層的 WHILE 迴圈中退出。 將執行出現在 END 關鍵字(迴圈結束的標記)後面的任何語句。
CONTINUE:使 WHILE 迴圈重新開始執行,忽略 CONTINUE 關鍵字後面的任何語句。
Sql Server系列:流程式控制制語句