SQL SERVER 流程控制語句

景上發表於2016-05-20

1、BEGIN……ELSE語句:通常包含在其他流程控制中;
示例:定義區域性變數@number,如果@number的值小於5,則執行WHILE中的語句塊;

   DECLARE @number INT;
   SELECT @number=0;
   WHILE @number<5
     BEGIN
       PRINT 'number=' + CONVERT(VARCHAR(10), @number)
       SET @number=@number+1
     END
   PRINT '迴圈過後number的值為' + CONVERT(VARCHAR(10), @number) 

這裡寫圖片描述

2、IF……ELSE語句:
示例:IF……ELSE流程控制語句的使用;

 DECLARE @count INT;
  SELECT @count=10;
  IF @count>11
    PRINT 'count的值比10大。'
  ELSE
    PRINT 'count的值不大於10。'

這裡寫圖片描述

3、CASE語句:多條件分支語句,有兩種格式:
格式一示例:根據id的值給‘排序’賦值;

    USE test2  ---資料庫名
    SELECT id,gender,
    CASE id
      WHEN 1 THEN '第一'  --如果id=1,則排序=第一;
      WHEN 2 THEN '第二'  --如果id=2,則排序=第二;
      ELSE '無'            --其他的id,排序=無;
    END AS '排序'
    FROM person

這裡寫圖片描述

格式二示例:

   SELECT id,gender,
   CASE 
     WHEN id < 2 THEN '第二'
     WHEN id < 3 THEN '第一'
     ELSE '無'
   END AS '排序'
   FROM person

這裡寫圖片描述

4、WHILE語句示例:

  DECLARE @count INT;
  SELECT @count=10;
  WHILE @count > 0
  BEGIN
   IF @count > 5
     BEGIN
       PRINT 'count等於'+CONVERT(VARCHAR(10),@count)+',大於5繼續執行;';
       SELECT @count=@count-1;
       CONTINUE;
     END
   ELSE
     BEGIN
       PRINT 'count等於'+CONVERT(VARCHAR(10),@count)+',不大於5,迴圈結束;';
       BREAK;
     END
  END

  PRINT 'WHILE迴圈結束後,count的值為'+CONVERT(VARCHAR(10),@count);

這裡寫圖片描述

5、GOTO語句:表示將執行留跳轉到標籤處;
示例:

  USE test2
  BEGIN
    SELECT id FROM person;
    GOTO jump
    SELECT gender FROM person; --第二條SELECT語句沒有執行;
    jump:   
  END

6、WAITFOR語句:用來暫時停止程式的執行,直到所設定的等待時間已過或快到時才繼續往下執行,延遲的時間格式為“HH:MM:SS”,在WAITFOR語句中不能指定日期,並且時間長度不能超過24小時;
–示例:10秒的延遲後執行SET語句(即10秒鐘後才輸出語句“520”);

    DECLARE @num VARCHAR(10);
    SET @num='520';
    BEGIN
      WAITFOR DELAY '00:00:10';
      PRINT @num;
    END;

7、RETURN語句:可在任何時候用於從過程、批處理或語句塊中退出,RETURN之後的語句是不執行的;儲存過程可向執行呼叫的過程或應用程式返回一個整數值,如“RUTURN 2”。除非另有說明,否則所有系統儲存過程返回的值均為0,0表示成功,非0表示失敗;

相關文章