首页 > 知识点讲解
       if-then-else语句与case语句
知识路径: > 数据库技术 > 数据库标准语言—SQL > SQL-99所支持的对象关系模型 > 函数和过程 > 过程的构造 > 
相关知识点:3个      
        条件语句包括if-then-else语句,使用语法如下:
        
        这段代码假定1、m和h是整型变量,r是行变量。如果我们用这段if-then-else代码替换掉前面一段的for循环中的“set n=n+r.balance”行,则循环将按照低、中和高余额分别计算这三类账户余额的总数。
        SQL-99的case语句类似于C/C++语言中的case语句。
        SQL-99还包括发信号通知异常条件(exception condition)的概念,以及声明句柄(handler)来处理异常,代码如下:
        
        在begin和end之间的语句可以执行signal out-of-stock来引发一个异常。这个句柄说明,如果条件发生,将会采取动作终止begin end中的语句。替换的动作将是continue,它继续从引发异常的语句的下一条语句开始执行。除了明确定义的条件,还有一些预定义的条件,比如sqlexception、sqlwarning和not found。
        下图是有关SQL-99的过程构造的实例。过程findEmpl计算给定经理(由参数mgr指定)的所有直接和非直接管理的员工的集合,并且将结果集中员工名字存储在一个被称为empl的关系中(假定这个关系已经存在)。关系manager(empname,mgrname)(假定可用)指明了谁直接为哪个经理工作。所有的直接/非直接管理的员工的集合构成了manager关系的传递闭包的主体。
        
        找出一个经理管理的所有员工
        该过程使用了两个临时表:newemp和temp。该过程在repeat循环之前把所有直接为mgr工作的员工插入到newemp中。Repeat循环首先把newemp中的所有员工添加到empl中。然后,它计算newemp中为经理工作的员工(除了那些已经找到的mgr的员工)并把它们存储到临时表temp中。最后用temp中的内容替换newemp中的内容。Repeat循环在找不到新员工(非直接的)时终止。我们注意到except子句的用处,它确保即使在有管理的循环(反常的)情况下,该过程仍可工作。例如,如果a为b工作,b为c工作,而c又为a工作,就出现了循环。
        虽然在管理控制中循环不可能出现,但是其他的应用中可能会出现循环。例如,假设我们有关系flights(to,from),表示从一个城市直飞可达的其他城市。我们可以修改findEmpl过程来查找从给定城市利用一次或多次航班的一个序列能到达的所有城市。所有我们要做的就是用flight替换manager并且替换相应的属性名。这种情况下有可能出现一个可到达性的循环,但是由于该过程排除了已经找到的城市,所以它能正确执行。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有