當前位置:我的電腦網 > MyDiannao.Com > 數據庫學習

Sql Server系列:流程控制語句

   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 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)
復制代碼

  執行結果:

復制代碼
count = 0 count = 1 count = 2 count = 3 count = 4 count = 5 count = 6 count = 7 count = 8 count = 9 loop 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 INT
SET @score = 100
IF @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 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 '成績'
復制代碼

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 關鍵字后面的任何語句。

5 WAITFOR語句

  語法:

復制代碼
WAITFOR  {     DELAY 'time_to_pass' 
  | TIME 'time_to_execute' 
  | [ ( receive_statement ) | ( get_conversation_group_statement ) ] 
    [ , TIMEOUT timeout ] }
復制代碼

5.1 DELAY參數

  DELAY參數指定了等待的時間段。不能指定天數,只能指定小時數、分鐘數和秒數。允許延遲的最長時間為24小時。

WAITFOR DELAY '01:00'

  將運行WAITFOR語句前的任何代碼,然后到達WAITFOR語句,停止1小時,之后繼續執行下一條語句中的代碼。

5.2 TIME參數

  TIME參數指定到達指定時間的等待時間。

WAITFOR TIME '01:00'

  將運行WAITFOR語句前的任何代碼,然后到達WAITFOR語句,直到凌晨1點停止執行,之后執行WAITFOR語句后的下一條語句。

分享到:
[] [返回上一頁]
Copyright © 2010 - 2019MyDiannao.Com. All Rights Reserved .
粵ICP備10200428號
欢乐捕鱼