电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SQL SERVER中的流程控制語句

瀏覽:136日期:2023-03-06 14:25:24
目錄
  • 批處理
  • 1、BEGIN...AND語句
  • 2、IF...ELSE語句
  • 3、 CASE語句
  • 4、 WHILE語句
  • 5、無條件退出語句RETURN
  • 6、無條件跳轉語句GOTO
  • 7、WAITFOR語句
    • 7.1 DELAY參數
    • 7.2 TIME參數

T-SQL中用來編寫流程控制模塊的語句有:BEGIN...AND語句、IF...ELSE語句、CASE語句、WHILE語句、GOTO語句、BREAK語句、WAITFOR語句和RETURN語句。

批處理

一個批處理段是由一個或者多個語句組成的一個批處理,之所以叫批處理是因為所有語句一次性被提交到一個SQL實例。

  • 批處理是分批提交到SQL Server示例,因此在不同的批處理里局部變量不可訪問。
  • 在不同批處理中,流程控制語句不能跨批處理。
  • 如果想讓多個語句分多次提交到SQL實例,則需要使用GO關鍵字。GO關鍵字本身并不是一個SQL語句,GO關鍵字可以看作是一個批處理結束的標識符,當遇到GO關鍵字時,當前GO之前的語句會作為一個批處理直接傳到SQL實例執行。
DECLARE @i int;
  SET @i = 1;
  GO--分批了
  PRINT @i  --@i在這個批里未定義

1、BEGIN...AND語句

語句塊是多條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)

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

5、無條件退出語句RETURN

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

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

6、無條件跳轉語句GOTO

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

7、WAITFOR語句

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

語法:

WAITFOR 
{
    DELAY "time_to_pass" 
  | TIME "time_to_execute" 
  | [ ( receive_statement ) | ( get_conversation_group_statement ) ] 
    [ , TIMEOUT timeout ]
}

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

7.1 DELAY參數

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

WAITFOR DELAY "01:00"

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

7.2 TIME參數

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

WAITFOR TIME "01:00"

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

到此這篇關于SQL SERVER流程控制語句的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持。

標簽: MsSQL
相關文章:
主站蜘蛛池模板: 福州甲醛检测-福建室内空气检测_环境检测_水质检测-福建中凯检测技术有限公司 | 西安文都考研官网_西安考研辅导班_考研培训机构_西安在职考研培训 | 在线钠离子分析仪-硅酸根离子浓度测定仪-油液水分测定仪价格-北京时代新维测控设备有限公司 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 破碎机_上海破碎机_破碎机设备_破碎机厂家-上海山卓重工机械有限公司 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 七维官网-水性工业漆_轨道交通涂料_钢结构漆| AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 深圳律师咨询_深圳律师事务所_华荣【免费在线法律咨询】网 | 蜂蜜瓶-玻璃瓶-玻璃瓶厂-玻璃瓶生产厂家-徐州贵邦玻璃制品有限公司 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 江苏齐宝进出口贸易有限公司 | 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 酒瓶_酒杯_玻璃瓶生产厂家_徐州明政玻璃制品有限公司 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 稳尚教育加盟-打造高考志愿填报平台_新高考志愿填报加盟_学业生涯规划加盟 | 广州监控安装公司_远程监控_安防弱电工程_无线wifi覆盖_泉威安防科技 | 分子蒸馏设备(短程分子蒸馏装置)_上海达丰仪器 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 太平洋亲子网_健康育儿 品质生活| 深圳货架厂家_金丽声精品货架_广东金丽声展示设备有限公司官网 | 上海软件开发-上海软件公司-软件外包-企业软件定制开发公司-咏熠科技 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | 北京征地律师,征地拆迁律师,专业拆迁律师,北京拆迁律师,征地纠纷律师,征地诉讼律师,征地拆迁补偿,拆迁律师 - 北京凯诺律师事务所 | 托利多电子平台秤-高精度接线盒-托利多高精度电子秤|百科 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | X光检测仪_食品金属异物检测机_X射线检测设备_微现检测 | 食药成分检测_调料配方还原_洗涤剂化学成分分析_饲料_百检信息科技有限公司 | 特种电缆厂家-硅橡胶耐高温电缆-耐低温补偿导线-安徽万邦特种电缆有限公司 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 湖南自考_湖南自学考试网 | 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 珠海网站建设_响应网站建设_珠海建站公司_珠海网站设计与制作_珠海网讯互联 | 周口风机|周风风机|河南省周口通用风机厂| 神马影院-实时更新秒播 | 密度电子天平-内校-外校电子天平-沈阳龙腾电子有限公司 | 金属切削液-脱水防锈油-电火花机油-抗磨液压油-深圳市雨辰宏业科技发展有限公司 | DNA亲子鉴定_DNA基因检测中心官方预约平台-严选好基因网 | 陶氏道康宁消泡剂_瓦克消泡剂_蓝星_海明斯德谦_广百进口消泡剂 |