成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL教程:流程控制

數據庫 其他數據庫
WHILE是循環控制,當滿足WHILE后面的條件后,就可以循環執行WHILE下面的語句。通常與CONTINUE和BREAK一起使用,Break命令讓程序完全跳出循環語句,結束WHILE命令,CONTINUE是讓命令繼續返回執行。

流程控制的定義

一般是指用來控制程序執行和流程分至點額命令,一般指的是邏輯計算部分的控制。

流程控制種類

常見的流程控制有以下8種:

  • BEGIN ... END
  • WAITFOR
  • GOTO
  • WHILE
  • IF ... ELSE
  • BREAK
  • RETURN
  • CONTINUE 下面給大家具體介紹每種流程控制的用法。

BEGIN...END

BEGIN ... END語句用于將多個T-SQL語句合為一個邏輯塊。當流程控制語句必須執行一個包含兩條或兩條以上的T-SQL語句的語句塊時,使用BEGIN ... END語句。

語法

BEGIN
sql_statement...
END

示例

我們在數據庫中打印出我們公眾號的名稱"SQL數據庫開發"。

DECLARE @A VARCHAR(20)
SET @A='SQL數據庫開發'
BEGIN
SELECT @A
END

結果如下:

圖片圖片

這里的SELECT @A就是一條被執行的命令語句。

IF [...ELSE]

IF [...ELSE]表示可以只使用IF,也可以IF和ELSE一起使用,表示條件判斷。當滿足某個條件使,就執行IF 下面的語句,否則執行ELSE下面的語句。

IF語法

IF <條件表達式>
{命令行 | 程序塊}

IF示例

如果某字符串的長度大于5,就打印該字符串。

DECLARE @A VARCHAR(20)
SET @A='SQL數據庫開發'
IF LEN(@A)>5
SELECT @A

結果:

圖片圖片

這里結果與上面的BEGIN...END一樣,但是如果我們將條件改成大于8,結果可能就不是這樣的了,小伙伴們可以試一下。

IF...ELSE語法

IF <條件表達式>
{命令行 | 程序塊}
ELSE
{命令行 | 程序塊}

IF...ELSE示例

如果字符串的長度大于10,就打印該字符串,否則打印"字符串長度太短"。

DECLARE @A VARCHAR(20)
SET @A='SQL數據庫開發'
IF LEN(@A)>10
SELECT @A
ELSE
SELECT '字符串長度太短'

結果:

圖片圖片

很明顯字符串"SQL數據庫開發"長度不大于10,所以返回ELSE里的結果了。

WHILE

WHILE是循環控制,當滿足WHILE后面的條件后,就可以循環執行WHILE下面的語句。通常與CONTINUE和BREAK一起使用,Break命令讓程序完全跳出循環語句,結束WHILE命令,CONTINUE是讓命令繼續返回執行。

語法

WHILE  <條件表達式>
{命令行 | 程序塊}
CONTINUE
{命令行 | 程序塊}
BREAK
{命令行 | 程序塊}

示例

有1到10這樣一組數字,從1按順序開始,遇到偶數就跳過,遇到奇數就打印出來,當遇到9就結束打印。

DECLARE @i int;
SET @i = 0;
WHILE(@i < 10)
BEGIN
    SET @i = @i + 1;
    IF(@i % 2 = 0)
    BEGIN
        PRINT ('跳過偶數數' 
        + CAST(@i AS varchar));
        CONTINUE;
    END
    ELSE IF (@i = 9)
    BEGIN
        PRINT ('到' +
        CAST(@i AS varchar) + '就結束打印');
        BREAK;
    END
    PRINT @i;
END

結果如下:

圖片圖片

我們只正常打印出來了1-3-5-7其他的不是跳過就是到9就結束了。

RETURN

RETURN語句用于使程序從一個查詢、存儲過程或批量處理中無條件返回,其后面的語句不再執行。如果在存儲過程中使用return語句,那么此語句可以指定返回給調用應用程序、批處理或過程的整數;如果沒有為RETURN指定整數值,那么該存儲過程將返回0。

語法

RETURN [整數表達式]。

示例

BEGIN
    PRINT(1);
    PRINT(2);
    RETURN ;
    PRINT(3);
    --在RETURN之后的代碼不會被執行,
    --因為會跳過當前批處理
    PRINT(4);
END
GO
BEGIN
    PRINT(5);
END


結果如下:

圖片圖片

RETURN后面的3-4都沒打印,說明在當前批處理的RETURN后都沒執行,而新起的BEGIN...END不受上面的RETURN影響,所以打印了5。

GOTO

GOTO命令用來改變程序執行的流程,使程序跳轉到標識符指定的程序行再繼續往下執行。

GOTO命令雖然增加了程序設計的靈活性,但破壞了程序的結構化,使程序結構變得復雜而且難以測試。

注意:

  • 語句標識符可以是數字或者字母的組合,但必須以":"結束。而在GOTO語句后的標識符不必帶":"。
  • GOTO語句和跳轉標簽可以在存儲過程、批處理或語句塊中的任何地方使用,但不能超出批處理的范圍。

語法

GOTO  標識符。

示例

DECLARE @i INT;
SET @i = 1;
PRINT @i;
SET @i = 2;
PRINT @i;
GOTO ME;
SET @i = 3; --這行被跳過了
PRINT @i;

ME:PRINT('跳到我了?');
PRINT @i

結果如下:

圖片圖片

從上面可以看出,當跳到ME的時候,GOTO之前的數有打印,之后的數就跳過了。

WAITFOR

用于掛起語句的執行,直到指定的時間點或者指定的時間間隔。

注意:

WAITFOR常用語某個特定的時間點或時間間隔自動執行某些任務。在WAITFOR語句中不能包含打開游標,定義視圖這樣的操作。在包含事務的語句中不要使用WAITFOR語句,因為WAITFOR語句在時間點或時間間隔執行期間將一直擁有對象的鎖,當事務中包含WAITFOR語句,事務的其他語句又需要訪問被鎖住的數據對象事就容易發生死鎖現象。

指定時間點的語法

WAITFOR   TIME <具體時間>。

示例

在'08:10:00'執行打印字符串"SQL數據庫開發"。

WAITFOR TIME '08:10:00'
PRINT 'SQL數據庫開發'

如果你執行這句話,那如果在今天這個點之前,那么等到這個時候它就會打印字符串,如果在今天這個點之后,那你需要等到第二天的這個時間點才會打印。在未執行之前查詢窗口是一直"正在執行查詢..."狀態

圖片圖片

指定等待時間間隔的語法

WAITFOR DELAY  'INTERVAR'。

INTERVAR為時間間隔,指定執行WAITFOR 語句之前需要等待的時間,最多為24小時。

示例

WAITFOR DELAY '00:00:03'
PRINT 'SQL數據庫開發'

在等到3秒鐘后,會打印出字符串。

圖片圖片

責任編輯:武曉燕 來源: SQL數據庫開發
相關推薦

2017-05-31 17:09:52

LinuxShell命令

2011-08-24 16:36:00

T-SQL

2022-07-27 08:31:28

SQL開發控制

2010-05-11 12:53:58

Unix awk

2011-08-23 13:36:11

T-SQL查詢流程控制語句

2009-12-15 09:56:51

Ruby流程控制

2009-09-04 10:42:56

C#流程控制語句

2021-05-27 05:27:22

流程控制Rust

2024-11-01 16:05:26

2010-07-19 10:11:58

Perl流程控制語句

2025-07-01 08:20:00

JUC包Java并發

2021-08-05 06:54:05

流程控制default

2024-11-05 12:59:42

while 循環迭代字節碼

2011-09-08 13:53:31

Node.js

2013-12-13 15:48:52

Lua腳本語言

2015-07-23 15:17:37

JavaScript循環語句

2010-03-18 16:37:13

Python 程序流程

2014-07-30 10:00:20

網絡人遠程控制軟件

2023-06-02 07:30:24

If-else結構流程控制

2010-11-04 10:55:16

DB2流程控制
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久高清国产视频 | 久久久国产一区二区三区四区小说 | 久久久久国产精品 | 亚洲欧美日韩在线 | 国产精品1区 | 亚洲第一成人av | 国产a区 | 久久夜夜 | 久久久久一区 | 中文字幕 在线观看 | 1级黄色大片 | 亚洲欧美日韩精品久久亚洲区 | 97伦理电影网 | 亚洲精品国产电影 | 国产精品美女久久久av超清 | 91看片在线观看 | 亚洲一区在线日韩在线深爱 | 91高清免费 | 亚洲欧美日韩在线不卡 | 久久88| 国产日韩精品在线 | 99成人在线视频 | 久久精品免费观看 | 国产精品一区在线观看 | 日本超碰 | 国产成人精品网站 | 国产一区二区三区视频在线观看 | 国产在线一区二区三区 | 久久蜜桃av | 九九精品久久久 | 亚洲成人久久久 | 国产传媒毛片精品视频第一次 | 国产视频久久久 | 国产成人精品一区二区三区视频 | 欧美精品在欧美一区二区少妇 | 国产婷婷在线视频 | av影音资源| 亚洲国产成人精品女人久久久 | 在线国产中文字幕 | 久久网站黄 | 日韩成人中文字幕 |