软121班-沈克-129074160(7)

2019-03-21 18:58

《数据库系统概论》实验报告书 安徽工业大学计算机学院

BEGIN

SELECT COUNT(*) INTO N FROM STUDENT; END; /

SET SERVEROUTPUT ON; DECLARE SCOUNT NUMBER; BEGIN

STU_COUNT(SCOUNT);

DBMS_OUTPUT.PUT_LINE('SCOUNT='||SCOUNT); END; /

EXECUTE STU_COUNT;

例7-2: (存储过程) 创建显示学生信息的存储过程STUDENT_LIST,并引用STU_COUNT存储过程。

CTEATE OR REPLACE PROCEDURE STUDENT_LIST AS

P1 STUDENT.SNO%TYPE; P2 STUDENT.SNAME%TYPE; P3 STUDENT.SDEPT%TYPE; P4 STUDENT.SCLASS%TYPE; P5 STUDENT.SAGE%TYPE; P6 STUDENT.SSEX%TYPE; N NUMBER(2);

30/19

《数据库系统概论》实验报告书 安徽工业大学计算机学院

CURSOR C_S IS SELECT * FROM STUDENT; BEGIN OPEN C_S; STU_COUNT(N); FOR I IN 1..N LOOP

FETCH C_S INTO P1,P2,P3,P4,P5,P6;

DBMS_OUTPUT.PUT_LINE('SNO:'||p1||’ SNAME:’||p2||’ SDEPT:’||p3|| 'SCLASS:'||p4||’ SSEX:’||p5||’ SAGE:’||p6); END LOOP; END; /

EXECUTE STUDENT_LIST;

例7-3: (存储过程) 创建一个显示学生平均成绩的存储过程。 CREATE OR REPLACE PROCEDURE STU_SAVG(V_SNO IN STUDENT.SNO%TYPE) AS

V_SNAME STUDENT.SNAME%TYPE; V_AVG NUMBER(5,2); C BEGIN

SELECT AVG(SCORE) INTO V_AVG FROM SCORE WHERE SNO=V_SNO; SELECT SNAME INTO V_SNAME FROM STUDENT WHERE SNO=V_SNO;

DBMS_OUTPUT.PUT_LINE('SNAME:'||V_SNAME||' '||'AVG_SCORE:'||V_AVG); END; /

EXECUTE STU_SAVG('97001');

例7-4: (存储过程) 创建显示所有学生平均成绩的存储过程。 CREATE OR REPLACE PROCEDURE SCORE_AVG AS

SAVG NUMBER(7,3);

31/19

《数据库系统概论》实验报告书 安徽工业大学计算机学院

BEGIN

SELECT AVG(SCORE) INTO SAVG FROM SCORE; DBMS_OUTPUT.PUT_LINE('SAVG ='|| SAVG); END; /

SET SERVEROUTPUT ON; EXECUTE SCORE_AVG;

例7-5: (修改数据库表) 在Student表中增加SAVG(N,6,2) 字段。 ALTER TABLE STUDENT ADD SAVG NUMBER(6,2);

例7-6: (存储过程) 创建存储过程,计算每个学生的平均成绩保存到学生表SAVG字段中。

create or replace procedure EVERYSTU_AVG as

v_no STUDENT.SNO%TYPE; v_name Student.SNAME%type; v_dept Student.SDEPT%type; v_class Student.SCLASS%type; v_age Student.SAGE%type; v_sex Student.SSEX%type; v_avg Student.SAVG%type;

32/19

《数据库系统概论》实验报告书 安徽工业大学计算机学院

m number(2);

cursor C_ADD is select * from Student; begin

STU_COUNT(m); OPEN C_ADD; FOR i IN 1..m LOOP

FETCH C_ADD INTO v_no,v_name,v_dept,v_class,v_age,v_sex,v_avg;

dbms_output.put_line('SNO:'|| v_no ||' SNAME:'||v_name||' SDEPT:'||v_dept|| ' SCLASS:'||v_class||' SAGE:'||v_age||' SSEX:'||v_sex||' SAVG:'||v_avg); END LOOP; END;

/

[ 实验要求 ]

① 创建、调试和修改、调用和执行Oracle存储过程; ② 创建、调试和修改、测试Oracle触发器。 [ 实验方法 ]

① 将实验需求用SQL语句表示;

② 执行SQL语句;

③ 查看执行结果,如果结果不正确,进行修改,直到正确为止。 ②

[ 实验总结 ]

本次实验学习使用存储过程和触发器。在学习此内容之前,我学习了PL/SQL语言,掌握了基本的语言用法后才能进行存储过程和触发器的编写。在一开始用存储过程输出结果时,却发现没有内容显示,后来才发现在使用dbms_output之前需要使用set serverout on打开serveroutput开关。存储过程的执行可以用直接执行的方法,例如:execute 过程名;或者利用其他过程调用。有关于数据库实验的心得体会,总的来说,受益匪浅。在这些天中,我们学到了很多东西,包括建表,导入数据,查询,插入。最重要的是我们有机会用电脑自己进行实践,没接触的时候总是觉得它比较深奥或是不可接近的新型语言,尽管自己对C语言非常感兴趣,但还是有些心理上的陌生感.通过学习还是学到了好多东西.

33/19


软121班-沈克-129074160(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:成本会计课后练习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: