`
wsql
  • 浏览: 11776775 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

PL/SQL 演练(此为玩具程序设计、demo需要,请勿对号入座、吹毛求疵)

 
阅读更多

一、功能设计

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

二、数据表设计

graduate数据表结果如下:

图略

result数据表结构如下;

图略

1、创建graduate数据表mis_01.sql

create table "SCOTT"."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)
TABLESPACE "USERS"

2、创建result数据表mis_02.sql

create table "SCOTT"."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)
TABLESPACE "USERS"

3、录入数据mis_03.sql

insert INTO "SCOTT"."GRADUATE"
("BH","XM","LB","YINGYU","ZHENGZHI","ZHUANYE1","ZHUANYE2","ZHUANYE3")
VALUES (2003080520,'张三丰','硕士',55,56,67,78,89);

insert INTO "SCOTT"."GRADUATE"
("BH","XM","LB","YINGYU","ZHENGZHI","ZHUANYE1","ZHUANYE2","ZHUANYE3")
VALUES (2003060555,'张翠山','硕士',66,78,78,89,92);

insert INTO "SCOTT"."GRADUATE"
("BH","XM","LB","YINGYU","ZHENGZHI","ZHUANYE1","ZHUANYE2","ZHUANYE3")
VALUES (2003056066,'张无忌','硕士',76,67,89,90,66);

insert INTO "SCOTT"."GRADUATE"
("BH","XM","LB","YINGYU","ZHENGZHI","ZHUANYE1","ZHUANYE2","ZHUANYE3")
VALUES (2003010989,'赵敏','硕士',45,59,74,66,56);

insert INTO "SCOTT"."GRADUATE"
("BH","XM","LB","YINGYU","ZHENGZHI","ZHUANYE1","ZHUANYE2","ZHUANYE3")
VALUES (2003050677,'周芷若','硕士',77,67,72,87,66);

insert INTO "SCOTT"."GRADUATE"
("BH","XM","LB","YINGYU","ZHENGZHI","ZHUANYE1","ZHUANYE2","ZHUANYE3")
VALUES (2003869401,'小昭','硕士',56,67,56,64,34);

insert INTO "SCOTT"."GRADUATE"
("BH","XM","LB","YINGYU","ZHENGZHI","ZHUANYE1","ZHUANYE2","ZHUANYE3")
VALUES (2003340987,'阿离','硕士',68,93,64,80,56);

insert INTO "SCOTT"."GRADUATE"
("BH","XM","LB","YINGYU","ZHENGZHI","ZHUANYE1","ZHUANYE2","ZHUANYE3")
VALUES (2003056709,'宋元桥','硕士',90,68,81,61,67);

insert INTO "SCOTT"."GRADUATE"
("BH","XM","LB","YINGYU","ZHENGZHI","ZHUANYE1","ZHUANYE2","ZHUANYE3")
VALUES (2003100894,'殷素素','硕士',69,73,62,70,75);

4、程序设计

创建处理过程scott.graduateprocess.sql

create or replace procedure scott.graduateprocess
(
tempzhengzhi in scott.graduate.zhengzhi%type,
tempyingyu in scott.graduate.yingyu%type,
tempzhuanye1 in scott.graduate.zhuanye1%type,
tempzhuanye2 in scott.graduate.zhuanye2%type,
tempzhuanye3 in scott.graduate.zhuanye3%type,
temptotalscore in scott.result.totalscore%type
)as
/* 定义graduaterecord为记录型变量,临时存放通过游标从graduate表中提取的记录*/
graduaterecord scott.graduate%rowtype;
/* 定义graduatetotalscore为数值型变量,统计总分 */
graduatetotalscore scott.result.totalscore%type;
/* 定义graduateflag为字符变量,根据结果放入落选或录取,然后写入数据表result */
graduateflag varchar2(4);
/*定义游标*/
cursor graduatecursor is
select * from scott.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
scott.result(bh,xm,lb,zhengzhi,yingyu,zhuanye1,zhuanye2,zhuanye3,totalscore,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
when errormessage then
dbms_output.put_line('无法打开数据表,请联系管理员徐建明');
end;

5、主程序设置

主程序mainprcess调用名为graduateprocess的国车公来完成处理,代码设计如下

set serveroutput on
declare
score1 number(4,1);
score2 number(4,1);
score3 number(4,1);
score4 number(4,1);
score5 number(4,1);
scoretotal number(5,1);
begin
score1:=50;
score2:=56;
score3:=60;
score4:=62;
score5:=64;
scoretotal:=325;
scott.graduateprocess(score1,score2,score3,score4,score5,scoretotal);
end;


6、采用执行主程序即可完成结果,可以在数据结果表中查看程序执行结果。

分享到:
评论

相关推荐

    Oracle PL/SQL程序设计(第5版)(套装上下册)

    《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...

    PL /SQL高级数据库程序设计语言

    PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问。由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理。除此之外,可以在ORACLE数据库的某些...

    Oracle PL/SQL程序设计(第5版)(下册)第二部分

    《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...

    oracle 9i pl/sql程序设计笔记

    oracle 9i pl/sql程序设计笔记。

    PL/SQL 程序设计

    PL/SQL 程序设计 本章主要重点:  PL/SQL概述  PL/SQL块结构  PL/SQL流程  运算符和表达式  游标  异常处理  数据库存储过程和函数  包  触发器

    Pl/Sql程序设计

    1、PL/SQL简介 2、PL/SQL基础 3、记录和表 4、在PL/SQL中使用SQL 5、内置SQL函数 6、游标 7、过程和函数 ...

    Oracle PL SQL程序设计 上 第五版(代码示例)

    《oracle pl/sql程序设计(第5版)》基于oracle数据库11g,从pl/sql编程、pl/sql程序结构、pl/sql程序数据、pl/sql中的sql、pl/sql应用构建、高级pl/sql主题6个方面详细系统地讨论了pl/sql以及如何有效地使用它。...

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    pl/sql developer11.0

    pl/sql developer11.0下载 pl/sql developer11.0下载 pl/sql developer11.0下载

    Oracle 12c PL/SQL程序设计终极指南

    PL/SQL本身涉及的知识点浩瀚、庞杂,初学者根本无法依靠自身能力理清头绪,学习成本极高.本书对知识点进行了体系化的梳理,化繁杂为有序,突出重点,直指核心,循序渐进,尽可能为学习者提供“捷径”,仅仅只是这...

    Oracle PL/SQL语言初级教程

    Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序,...

    PL/SQL Developer9.06

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

    PL/SQL免安装版

    PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的...

    Oracle PL/SQL程序设计(第5版)

    《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...

    PL/SQL Developer 客户端

    PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的...

    一个对数据库的操作工具PL/SQLpl/sqL工具

    一个对数据库的操作工具PL/SQL,能够对ORACLE\SQL进行很好的帮助操作!

    PL/SQL User's Guide and Reference (官方CHM)

    PL/SQL, Oracle's procedural extension of SQL, is an advanced fourth-generation programming language (4GL). It offers modern features such as data encapsulation, overloading, collection types, ...

    Oracle PL/SQL程序设计(第5版)(上下册)

    Oracle PL/SQL程序设计(第5版)(上下册),《Oracle PL/SQL程序设计(第5版)》基于 Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、 PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细...

    pl/sql develpment 8 下载

    pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl...

    pl/sql最新中文手册

    最新pl/sql7.0中文手册

Global site tag (gtag.js) - Google Analytics