`

SQL存储过程学习(转载)

SQL 
阅读更多
一、功能设计

开发目标研究生招生系统,要求设计PL/SQL程序对考生的成绩数据进行处理,处理的逻辑是根据每门专业课的最低分数线和总分的最低分数线自动将考生归类为录取考生、调剂考生、落选考生。
为此设计2个数据表,graduate数据表存放考生成绩,result数据表存放处理结果,PL/SQL程序完成的功能就是将graduate数据表中的数据逐行扫描,根据分数线进行判断,计算各科总分,在result数据表中将标志字段自动添加上“录取”或“落选”。

二、数据表设计

create table RESULT
(
  BH        NUMBER(10) not null,
  XM        VARCHAR2(10) not null,
  LB        VARCHAR2(10) not null,
  YINGYU    NUMBER(4,1) not null,
  ZHENGZHI  NUMBER(4,1) not null,
  ZHUANYE1  NUMBER(4,1) not null,
  ZHUANYE2  NUMBER(4,1) not null,
  ZHUANYE3  NUMBER(4,1) not null,
  TOTALSORE NUMBER(5,1) not null,
  FLAG      VARCHAR2(4) not null
)
create table GRADUATE
(
  BH       NUMBER(10) not null,
  XM       VARCHAR2(10) not null,
  LB       VARCHAR2(10) not null,
  YINGYU   NUMBER(4,1) not null,
  ZHENGZHI NUMBER(4,1) not null,
  ZHUANYE1 NUMBER(4,1) not null,
  ZHUANYE2 NUMBER(4,1) not null,
  ZHUANYE3 NUMBER(4,1) not null
)


insert into GRADUATE (BH, XM, LB, YINGYU, ZHENGZHI, ZHUANYE1, ZHUANYE2, ZHUANYE3)
values (2003080520, '张三丰', '硕士', 55, 56, 67, 78, 89);
insert into GRADUATE (BH, XM, LB, YINGYU, ZHENGZHI, ZHUANYE1, ZHUANYE2, ZHUANYE3)
values (2003060555, '张翠山', '硕士', 66, 78, 78, 89, 92);
insert into GRADUATE (BH, XM, LB, YINGYU, ZHENGZHI, ZHUANYE1, ZHUANYE2, ZHUANYE3)
values (2003056066, '张无忌', '硕士', 76, 67, 89, 90, 66);
insert into GRADUATE (BH, XM, LB, YINGYU, ZHENGZHI, ZHUANYE1, ZHUANYE2, ZHUANYE3)
values (2003010989, '赵敏', '硕士', 45, 59, 74, 66, 56);
insert into GRADUATE (BH, XM, LB, YINGYU, ZHENGZHI, ZHUANYE1, ZHUANYE2, ZHUANYE3)
values (2003050677, '周芷若', '硕士', 77, 67, 72, 87, 66);
insert into GRADUATE (BH, XM, LB, YINGYU, ZHENGZHI, ZHUANYE1, ZHUANYE2, ZHUANYE3)
values (2003869401, '小昭', '硕士', 56, 67, 56, 64, 34);
insert into GRADUATE (BH, XM, LB, YINGYU, ZHENGZHI, ZHUANYE1, ZHUANYE2, ZHUANYE3)
values (2003340987, '阿离', '硕士', 68, 93, 64, 80, 56);
insert into GRADUATE (BH, XM, LB, YINGYU, ZHENGZHI, ZHUANYE1, ZHUANYE2, ZHUANYE3)
values (2003056709, '宋元桥', '硕士', 90, 68, 81, 61, 67);
insert into GRADUATE (BH, XM, LB, YINGYU, ZHENGZHI, ZHUANYE1, ZHUANYE2, ZHUANYE3)
values (2003100894, '殷素素', '硕士', 69, 73, 62, 70, 75);


三、程序设计

CREATE OR REPLACE Procedure graduateprocess
(
  tempzhengzhi In graduate.zhengzhi%type,
  tempyingyu In graduate.yingyu%type,
  tempzhuanye1 In graduate.zhuanye1%type,
  tempzhuanye2 In graduate.zhuanye2%type,
  tempzhuanye3 In graduate.zhuanye3%type,
  temptotalscore In result.totalsore%type
)

as
/* 定义graduaterecord为记录型变量,临时存放通过游标从graduate表中提取的记录*/
  graduaterecord graduate%rowtype;
 /* 定义graduatetotalscore为数值型变量,统计总分 */
  graduatetotalscore result.totalsore%type;
 /* 定义graduateflag为字符变量,根据结果放入落选或录取,然后写入数据表result */
  graduateflag varchar2(4);
 /*定义游标*/
  cursor graduatecursor is
  select * From graduate;
  errormessage exception;
begin
    open graduatecursor;
    if graduatecursor%notfound then
      raise errormessage;
    end if;
    loop
      fetch graduatecursor into graduaterecord;
      graduatetotalscore:=graduaterecord.yingyu + graduaterecord.zhengzhi + graduaterecord.zhuanye1 + graduaterecord.zhuanye2 + graduaterecord.zhuanye3;
      if (graduaterecord.yingyu >= tempyingyu and
          graduaterecord.zhengzhi >= tempzhengzhi and
          graduaterecord.zhuanye1 >= tempzhuanye1 and
          graduaterecord.zhuanye2 >= tempzhuanye2 and
          graduaterecord.zhuanye3 >= tempzhuanye3 and
          graduatetotalscore >= temptotalscore) then
          graduateflag:='录取';
      else
          graduateflag:='落选';
      end if;

      exit when graduatecursor%notfound;
      insert into
        result(bh,xm,lb,zhengzhi,yingyu,zhuanye1,zhuanye2,zhuanye3,totalsore,flag)
        values(graduaterecord.bh,graduaterecord.xm,graduaterecord.lb,graduaterecord.zhengzhi,graduaterecord.yingyu,graduaterecord.zhuanye1,graduaterecord.zhuanye2,graduaterecord.zhuanye3,graduatetotalscore,graduateflag);
      end loop;
    close graduatecursor;
    commit;
    Exception
    Rollback;
    when errormessage then
    dbms_output.put_line('无法打开数据表,请联系管理员!');
end;


分享到:
评论

相关推荐

    sqlserver学习资料(转载!)

    - 存储过程:预编译的T-SQL代码块,可多次执行,提升性能并封装业务逻辑。 6. 触发器: - 用于在INSERT、UPDATE或DELETE操作后自动执行特定任务的特殊类型的存储过程。 7. SQL Server备份与恢复: - 完全备份:...

    SQL笔试题(转载的)

    9. **存储过程(STORED PROCEDURE)**:预编译的SQL语句集合,可包含控制流语句,提高了代码重用性和安全性。 10. **触发器(TRIGGER)**:在特定事件(如INSERT、UPDATE或DELETE)发生时自动执行的SQL代码,用于...

    SQL大总结——转载经典——价值过亿

    10. **存储过程和触发器**:存储过程是一组预编译的SQL语句,可提高执行效率;触发器在特定事件(如INSERT、UPDATE、DELETE)发生时自动执行,常用于实现业务规则。 11. **SQL与编程语言的交互**:在实际开发中,...

    MySQL 5.0 存储过程

    存储过程是存储在数据库中的程序代码块,通过定义名称、参数列表及一系列SQL语句,可以执行复杂的数据库操作。本书将用实例与读者进行对话,使读者能通过简单的问题和例子,快速掌握所需知识。 在书中首先介绍了...

    db2学习代码例子(代码为转载网上)

    4. `DB2 SQL存储过程语法官方权威指南(翻译).mht`:这个文件提供了DB2 SQL存储过程的官方语法参考,可能包括创建、修改和执行存储过程的步骤,以及各种内置函数和控制结构的用法。 5. `freelance graphics - ebu-...

    Visual_C++_+_SQL_Server数据库应用实例完全解析

    《Visual C++ + SQL Server数据库应用实例完全解析》是一本专为IT专业人士和学习者设计的书籍,旨在深入探讨如何利用Microsoft的Visual C++编程语言与SQL Server数据库系统相结合,进行高效的数据管理和应用程序开发...

    jBPM-jPDL学习笔记——流程设计与控制(转载)

    **jBPM-jPDL学习笔记** ...总之,jBPM-jPDL的学习涉及流程建模的基本概念、流程控制语句的使用、数据库配置以及项目构建和部署的过程。掌握这些知识点,开发者就能有效地管理和自动化复杂的业务流程。

    《转载》oracle1000问

    - 存储过程、函数、触发器等是PL/SQL的重要组成部分。 4. **性能优化**: - SQL优化:使用EXPLAIN PLAN分析执行计划,通过索引、连接优化、子查询优化提升性能。 - 会话管理:通过设置合适的初始化参数调整会话...

    JAVA OA平台源码(转载)SPRING BOOT....

    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。在Spring Boot项目中集成MyBatis,可以提供灵活的数据库操作能力,使得数据访问层的编写更为简单。Spring Boot通过自动配置,可以轻松地与...

    转载的jsp信息发布系统

    在描述中提到的“MSSQL数据库”指的是Microsoft SQL Server,这是一个强大的关系型数据库管理系统,用于存储和管理信息,与JSP应用程序配合,提供数据存储和检索功能。 在该系统中,我们可以根据压缩包内的文件名...

    最好的asp CMS系统科讯CMSV7.0全功能SQL商业版,KesionCMS V7.0最新商业全能版-免费下载

    科汛cms(Kesioncms)是基于采用网络中已经成熟、稳定的技术ASP+ACCESS(SQL2000/2005)开发而成,利用本系统您可以很方便地管理自己的网站。本系统是一款由文章、图片、下载、分类信息、商城、求职招聘、影视、动漫...

    C#.NET经典案例解析转载

    这个案例可以帮助学习者理解如何使用C#类库来组织数据,如创建Employee类来存储员工信息,并使用ADO.NET或Entity Framework与数据库进行交互。此外,它还可能涉及到Windows Forms或WPF界面设计,以及事件处理和数据...

    【RPA之家转载视频教程7】在UiPath中排序数据表-如何在UiPath中对数据表进行排序-RPA技术中心.rar

    本视频教程【RPA之家转载视频教程7】深入讲解了如何在UiPath中对数据表进行排序,旨在帮助学习者掌握这一核心技能。 首先,理解数据表排序的基本概念至关重要。在UiPath中,数据表通常以DataTable的形式存在,它是...

    OA办公自动化系统(asp.net)

    SQL Server 2005引入了存储过程、触发器、视图等高级功能,有助于提高数据的安全性和一致性。同时,其内置的 Reporting Services 和 Analysis Services 提供了商业智能功能,便于数据分析和报表生成。 标签"tag oa ...

    ogame中文源代码(网络转载)

    《Ogame中文源代码解析与学习指南》 Ogame是一款著名的网页游戏,以其太空主题、策略元素和玩家间的互动性而受到广泛...通过细致研究,我们可以学习到从概念到实现的整个过程,以及在实际项目中应用各种技术和策略。

    Linq体验系列文章打包

    5. **存储过程**:`LINQ to SQL语句之存储过程`章节可能详细讲解了如何在LINQ中调用和使用数据库的存储过程。 6. **组操作**:`Group By`、`Having`、`Exists`、`In`、`Any`、`All`和`Contains`这些关键字都是用于...

    jdbc连接数据库的方式2

     在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。  9、使用Object...

    转载,若依快速开发框架很不错,详情请看https://www.ruoyi.vip/

    3. **MyBatis**:MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它将SQL语句与Java代码分离,使得SQL与Java代码更易于...

    【转载】NET平台下的架构开发(最全的).docx

    7. **数据访问层的实现** - 分别介绍三种不同的实现方式:Access+动态生成SQL、SQL Server+存储过程以及基于NBear的ORM实现。 8. **业务逻辑层的实现** - 解释业务规则的处理和封装。 9. **表示层的实现** - 展示...

    题库系统与试卷生成(毕业设计含论文).rar

    【描述】:“特别声明:转载希望作者本人允许。包括毕业论文,答辩ppt中期报告。”这表明该压缩包可能包含了整个毕业设计过程的重要组成部分。毕业论文是对整个项目研究的详细书面阐述,通常包括问题背景、设计目标...

Global site tag (gtag.js) - Google Analytics