当前位置:操作系统 > Unix/Linux >>

PL/SQL综合实例

本节将在前面学习的PL/SQL基础上分析一个较复杂的实例,以教会读者编写完整的PL/SQL程序的方法。

  实例设计

  1. 功能设计

  某高校开发的研究生招生系统,要求设计PL/SQL程序对考生的成绩数据进行处理,处理的逻辑是根据每门专业课的最低分数线和总分的最低分数线自动将考生归类为录取考生、调剂考生和落选考生。

  为此设计两个数据表,graduate数据表存放考生成绩,result数据表存放处理结果,PL/SQL程序完成的功能就是将graduate数据表中的数据逐行扫描,根据分数线进行判断,计算出各科总分,在result数据表中将标志字段自动添加上“录取”或“落选”。

  2. 数据表设计

  Graduate数据表结构如表9.3所示。

  创建数据表

  

  为了简化起见,实例的两个数据表都建立在默认的scott用户下,这样读者可以完全模拟实例一致的环境进行学习。

  1. 创建graduate数据表

  在图9.58所示的创建表的【一般信息】选项卡中按照下列步骤进行配置。

  在【名称】文本框中输入“GRADUATE”。

  在【方案】下拉列表框中选择“SCOTT”。

  在【表空间】下拉列表框中选择“USERS”。

  在【表结构定义区】按照图所示进行设置。

  完成设置后单击按钮。

  读者也可以在【SQLPlus Worksheet】中执行下列SQL代码,直接创建数据表SCOTT.GRADUATE。

  

  ??????????????????????????????????????

  

  【配套程序位置】:第9章 creategraduate.sql。

  2. 创建result数据表

  在图9.59所示的创建表的【一般信息】选项卡中按照下列步骤进行配置。

  在【名称】文本框中输入“RESULT”。

  在【方案】下拉列表框中选择“SCOTT”。

  在【表空间】下拉列表框中选择“USERS”。

  在【表结构定义区】按照图所示进行设置。

  完成设置后单击按钮。

  读者也可以在【SQLPlus Worksheet】中执行下列SQL代码,直接创建数据表SCOTT.RESULT。

  

  ??????????????????????????????????????

  

  【配套程序位置】:第9章 createresult.sql。

  录入数据

  利用【表数据编辑器】向SCOTT.GRADUATE数据表录入下列实验数据。如图9.60所示。

  读者也可以在【SQLPlus Worksheet】中执行下列SQL代码,直接向数据表SCOTT.GRADUATE中录入测试数据。

  【配套程序位置】:第9章 insertgraduate.sql。

  程序设计

  1. 创建处理过程scott.graduateprocess

  在【SQLPlus Worksheet】中执行下列PL/SQL代码,创建处理过程scott.graduateprocess。执行结果如图9.61所示。

  

  ?????????????????????????????????????

  

  【配套程序位置】:第9章 creategraduateprocess.sql。

  2. 主程序mainprocess设计

  主程序调用名为graduateprocess的过程来完成处理,代码设计如下:

  

  ?????????????????????????????????????

  

  (2)利用【表数据编辑器】查看scott.result数据表的结果,如图9.63所示。

  2. 第二组执行结果

  (1)将mainprocess.sql文件稍做改动,在【SQLPlus Worksheet】中执行下列PL/SQL程序,执行结果如图9.64所示。

  【配套程序位置】:第9章 mainprocess1.sql。

  (2)利用【表数据编辑器】查看scott.result数据表的结果,如图9.63所示。

  2. 第二组执行结果

  

  (1)将mainprocess.sql文件稍做改动,在【SQLPlus Worksheet】中执行下列PL/SQL程序,执行结果如图9.64所示。

  【配套程序位置】:第9章 mainprocess2.sql。

  (2)利用【表数据编辑器】查看scott.result数据表的结果,如图9.65所示。

  综合运用PL/SQL的设计要素,就可以设计出很多复杂的处理程序,这也是DBA的一项重要任务。本文来自:http://doc.xiaoyaxiao.com/77911.html
发表您的高见!
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,