一元运算符含义.PPT
文本预览下载声明
7.2.3 多分支表达式 2.搜索case表达式 case when 逻辑表达式1 then 结果值1 [when 逻辑表达式2 then 结果值2 … when 逻辑表达式n when 结果值n] [else 结果值n+1] end 说明: (1)依次计算when子句后的“逻辑表达式”,直到找到第一个值为true的“逻辑表达式”,就返回when子句关联的then子句中的结果值,不再判断后续when子句中的值 (2)若所有的when子句后的“逻辑表达式”都不满足true,如果有else子句,则返回else子句中的结果值。 7.2.3 多分支表达式 【例7-7】 查询学生的相关信息,并将成绩按照以下规则替换,60分以下替换不及格,60~85替换为合格,85分以上替换为优秀,其它替换为未考。 select 学生.学号,姓名,成绩= case when 成绩 is null then 未考 when 成绩 60 then 不及格考 when 成绩 85 then 合格 else 优秀 end from 学生,选修 where学生.学号=选修.学号 7.2.3 多分支表达式 【例7-8】 计算各教师的各门各班课程的课酬信息,课酬计算公式=学时*课酬标准,其中课酬标准分别如下:教授为50,副教授为45,讲师为35,助教为30。 select 教师.工号,课程.课程号,班级.班级号,课酬 = 学时* case when 职称=教授 then 50 when 职称=副教授 then 45 when 职称=讲师 then 35 else 30 end into 课酬 from 教师,课程,授课,班级 where 教师.工号=授课.工号 and 课程.课程号=授课.课程号 and 班级.班级号=授课.班级号 go select * from 课酬 go 运行结果如图7-2所示。 7.2.4 循环语句 可以使用while…continue…break语句重复执行SQL语句或语句块。语法格式如下: while条件 {sql语句1|语句块1} [break] {sql语句2|语句块2} [continue] 说明: (1)首先判断条件是否为true,如果为true,则按顺序往下执行循环体,本次循环执行完毕后,回到while条件开始处,再次判断条件,如果为true,继续执行循环体,重复前面的步骤,直至while条件为假,跳出循环体,结束循环; (2)break语句是使程序完全跳出本层循环,结束整个循环体的执行; (3)continue语句是使程序终止本次循环,结束循环体中continue后面语句的执行,返回while条件开始处,重新开始下一次的while循环。 7.2.4 循环语句 【例7-9】 求1~100之间的奇数之和。 declare @sum as int declare @i as smallint set @sum=0 set @i=0 while @i=100 /*外层循环从1到100*/ begin set @i=@i+1 if (@i%2)=0 /*如果@i能够被2整除,则不是奇数*/ continue else set @sum=@sum+@i if @i=99 break end print 1到100之间的奇数之和为:+convert(char(6),@sum) /*输出和*/ 运行结果如图7-3所示。 7.2.5 其它语句 其他语句包括批处理语句,数据库切换语句,显示语句等,分别介绍如下: 1.批处理语句 批处理是成组执行一条或多条Transact-SQL语句的语句或命令集合。批处理运行时是一次性分析,编译和执行。 一系列顺序提交的批处理称为脚本。一个脚本中可以包含一个或多个批处理。批处理和批处理之间的定界是通过SQL Server的关键字go来定界。 在SQL Server中使用批处理有如下限制: (1)大多数create语句不可以在同一个批处理中使用,如create procedure,create rule,create default,create trigger,create view不能混合使用; (2)不能在同一批处理中使用alter table命令修改表结构后,又立即引用其新增的列; (3)不能在同一批处理中,删除一个对象后又立即重建它; (4)用set语句改变的选项在批处理结束时生效。 (5)如果在同一批处理中运行多个存储过程,则除第一个存储过程外,其余存储过程在调用时必须使用execute语句 7.2.5 其它语
显示全部