讲义13:流程控制

来源:互联网 发布:微信windows手机版 编辑:程序博客网 时间:2024/05/25 19:57
-- 上课内容:第五单元 T-SQL语言 (流程控制语句)-- 5.5 流程控制语句 -- 5.5.1 IF ...ELSE 语句  -- 用于在执行 Transact-SQL 语句时强加条件的条件判断语句。  -- 语法:IF Boolean_expression{ sql_statement | statement_block }[ELSE{ sql_statement | statement_block } ] IF 条件    条件满足时执行某个Transact-SQL 语句[ELSE    条件不满足时执行某个Transact-SQL 语句]  -- 例1if 26>25   print '26>25 条件满足' else   print '26<25 条件不满足' if 21>25   print '21<25 条件满足' else   print '21>25 条件不满足'  -- ELSE 子句可选 if 26>25   print '26>25 条件满足' if 21>25   print '21<25 条件满足'  -- 例2if 21>25   print '21<25'   print '条件满足' else   print '21>25'   print '条件不满足'  -- 显示出错,必须要把一起执行的语句放在一个begin end里 -- 5.5.2 BEGIN ...END 语句  -- 用于将多个 Transact-SQL 语句组合为一个逻辑块。  -- 任何时候当控制流语句必须执行一个包含两条或两条以上 Transact-SQL 语句的语句块时,请使用 BEGINEND 语句。  --语法 :BEGIN { sql_statement | statement_block }END if 21>25   BEGIN     print '21<25'     print '条件满足'   END else   BEGIN     print '21>25'     print '条件不满足'   END -- 5.5.3 CASE 语句 -- 在pubs数据库authors表中,在不改变表内数据的前提下,显示州的全拼  -- 例5SELECT au_id,au_lname,'StateName'   =CASE      WHEN state='CA' THEN 'California'      WHEN state='KS' THEN 'Kansas'      WHEN state='TN' THEN 'Tennessee'      WHEN state='OR' THEN 'Oregon'    ELSE 'Other'        END FROM authors  -- 例6SELECT au_id,au_lname,   StateName=CASE state      WHEN 'CA' THEN 'California'      WHEN 'KS' THEN 'Kansas'      WHEN 'TN' THEN 'Tennessee'      WHEN 'OR' THEN 'Oregon'    ELSE 'Other'        END FROM authors  -- 例7SELECT au_id,au_lname,   CASE state      WHEN 'CA' THEN 'California'      WHEN 'KS' THEN 'Kansas'      WHEN 'TN' THEN 'Tennessee'      WHEN 'OR' THEN 'Oregon'    ELSE 'Other'        END AS StateName FROM authors -- 5.5.4 WHILE...BREAK...CONTINUE 语句  -- 只要指定的的条件为真,则 WHILE 语句重复语句或语句块。  -- 有两条 Transact-SQL 语句通常与 WHILE 同时使用:BREAKCONTINUE。  -- BREAK 语句退出最内层 WHILE 循环,CONTINUE 语句重新开始 WHILE 循环。  -- 如果没有其它行可以处理,则程序可能执行 BREAK 语句。如果要继续执行代码,则可执行 CONTINUE 语句。  -- 语法:WHILE Boolean_expression{ sql_statement | statement_block }[ BREAK ]{ sql_statement | statement_block }[ CONTINUE ]   -- 例3:-- 显示最终结果:declare @i intdeclare @j intselect @i=1,@j=1while @i<4  begin    set @j=@i*@j    set @i=@i+1  end    select @i-1 as 'de  ',@j as 'jicheng '-- 显示每个步骤的结果:declare @i intdeclare @j intselect @i=1,@j=1while @i<4  begin    set @j=@i*@j    set @i=@i+1    select @i-1 as 'de  ',@j as 'jicheng '  end  -- 例4BREAK CONTINUE的用法declare @i intdeclare @j intselect @i=1,@j=1while @i<4  begin    set @j=@i*@j    set @i=@i+1    if @i=3       break    else       continue  end    select @i-1 as 'de  ',@j as 'jicheng ' -- 5.5.5 GOTO 语句  -- 将执行流变更到标签处。  -- 跳过 GOTO 之后的 Transact-SQL 语句,在标签处继续处理。  -- GOTO 语句和标签可在过程、批处理或语句块中的任何位置使用。  -- GOTO 语句可嵌套使用。   -- 例8:用goto 语句来替换while语句的操作,完成例3的功能declare @i intdeclare @j intselect @i=1,@j=1lab:    set @j=@i*@j    set @i=@i+1    if @i<11      goto lab    else    select @i-1 as 'de  ',@j as 'jicheng '  -- 5.5.6 WAITFOR 语句  -- 指定触发语句块、存储过程或事务执行的时间、时间间隔或事件。  -- 语法:  WAITFOR { DELAY 'time' | TIME 'time' }  -- 例9:等待3秒执行查询   WAITFOR DELAY '0:0:3'   select * from authors  -- 例10:等到某一时间执行查询   WAITFOR TIME '19:10'    select * from authors   -- 5.5.7 RETURN 语句  -- 例11if 1>2   print '条件正确' else   begin    print '条件 '    return     print '出错 '   end
0 0
原创粉丝点击