日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

pl/sql數據庫開發綜合實例

系統 2373 0

1.功能設計
某高校開發的研究生招生系統,要求設計pl/sql程序對考生的成績數據進行處理,處理的邏輯是根據每門專業課的最低分數線和總分的最低分數線自動將考生歸類為錄取考生,調劑考生和落選考生。

為此設計兩個數據表,graduate數據表存放考生成績,resut數據表存放處理結果,pl/sql程序完成的功能就是將graduate數據表的數據逐行掃描,根據分數線進行判斷,計算出各科總分,在result數據表中將標志字段自動添加上"錄取"或"落選"。

2.數據表設計
--研究生表--

      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

);


    

--結果表--

      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,

  "TOTALSCORE" NUMBER(5,1) NOT NULL,

  "FLAG" VARCHAR2(4) NOT NULL

);


    

?3.錄入數據

      insert into graduate values(2003080520,'張三豐','碩士',55,56,67,78,89);

insert into graduate values(2003060555,'張翠山','碩士',66,78,78,89,92);

insert into graduate values(2003056066,'張無忌','碩士',76,67,89,90,66);

insert into graduate values(2003010989,'趙敏','碩士',45,59,74,66,56);

insert into graduate values(2003050677,'周芷若','碩士',77,67,72,87,66);

insert into graduate values(2003869401,'小昭','碩士',56,67,56,64,34);

insert into graduate values(2003340987,'阿離','碩士',68,93,64,80,56);

insert into graduate values(2003056709,'宋遠橋','碩士',90,68,81,61,67);

insert into graduate values(2003100894,'殷素素','碩士',69,73,62,70,75);


    

?4.程序設計

      /*定義過程參數*/

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.totalscore%type

)

as

/*定義graduaterecord為記錄型變量,臨時存放通過游標從graduate數據表中提取的記錄*/

  graduaterecord graduate%rowtype;

/*定義graduatetotalscore為數值型變量,統計總分*/  

  graduatetotalscore result.totalscore%type;

/*定義graduateflag為字符型變量,根據結果放入"落選"或"錄取",然后寫入數據表result*/

  graduateflag varchar2(4);

/*定義游標graduatecursor,存放的是所有的graduate數據表中的記錄*/  

  cursor graduatecursor is select * from graduate;

/*定義異常處理errormessage*/  

  errormessage exception;

/*開始執行*/  

begin

  /*打開游標*/

  open graduatecursor;

  /*如果游標沒有數據,激活異常處理*/

  if graduatecursor%notfound then

    raise errormessage;

  end if;

  /*游標有數據,指針指向第一條記錄,每執行fetch命令,就自動下移,循環執行到記錄提取完畢為止*/

  loop 

    fetch graduatecursor into graduaterecord;

    /*計算總分*/

    graduatetotalscore := graduaterecord.yingyu + graduaterecord.zhengzhi + graduaterecord.zhuanye1

   + graduaterecord.zhuanye2 + graduaterecord.zhuanye3;

    /*判斷單科和總分是否滿足錄取要求,若滿足,graduateflag變量值為"錄取",否則為"落選"*/

    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;

    /*向結果數據表result中插入處理后的數據*/

    insert into result values(graduaterecord.bh,graduaterecord.xm,graduaterecord.lb,

				graduaterecord.yingyu,graduaterecord.zhengzhi,graduaterecord.zhuanye1,graduaterecord.zhuanye2,

    graduaterecord.zhuanye3,graduatetotalscore,graduateflag);

  end loop;

  /*關閉游標*/

  close graduatecursor;

  /*提交結果*/

  commit;

  /*異常處理,提示錯誤信息*/

  exception 

  when errormessage then 

  dbms_output.put_line('無法打開數據表');

  /*程序執行結束*/

end;


    

5.執行結果,程序調用。

      /*定義6個入口變量,分別對應graduate數據表中的專業課和總分分數線*/

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;

/*調用處理過程*/

  graduateprocess(score1,score2,score3,score4,score5,scoretotal);

end;


    

?綜合運用pl/sql的設計要素,就可以設計出很多復雜的處理程序,這也是DBA的一項重要任務。

pl/sql數據庫開發綜合實例


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 桦南县| 如东县| 阿荣旗| 科技| 平湖市| 东城区| 隆德县| 巩留县| 来凤县| 东丰县| 沿河| 濮阳市| 北票市| 西畴县| 漳浦县| 泾阳县| 右玉县| 双辽市| 宣恩县| 凤翔县| 正蓝旗| 十堰市| 红河县| 和田县| 屏东县| 承德市| 额尔古纳市| 桓台县| 娄底市| 井冈山市| 永泰县| 鹿泉市| 关岭| 米脂县| 佛冈县| 乳山市| 高清| 屯昌县| 浦城县| 永寿县| 新余市|