西北农林科技大学数据库实习五

发布时间:2022-06-14 18:50:11   来源:党团工作    点击:   
字号:

 《 存储过程与触发器 》实验报告 一、实验目的 (1)掌握 Oracle 数据库编程语言 PL/SQL 的基础知识。

 (2)掌握游标、存储过程和触发器的创建,使用方法。

 (3)了解使用高级语言连接数据库的技术、基本方法,了解 ODBC、ADO 和 JDBC的技术。

 二、实验内容 在实验一、实验二创建的表中用 PL/SQL 语言完成以下内容:

 1.创建存储过程,根据调用时提供的学生姓名查询该学生所修课程的课程信息,在过程体中将课程号、课程名和成绩输出到输出窗口,在 SQL 窗口中给出过程调用语句块。

 创建的存储过程 P1

  SQL 中调用的语句块

  语句执行结果

  2.创建存储过程,统计指定学生学号的平均成绩和选课门数,将统计结果用输出参数传递给主程序,在 SQL 窗口中调用存储过程,输出过程的返回结果。

 创建的存储过程 P2 SQL 中调用存储过 程 P2

  执行结果

  3.创建存储过程,在学生表 Student 中插入一条完整的元组,在 SQL 窗口中给出过程调用语句块。

 存储过程 P3 SQL 插入语句 语句执行结果

 4.创建存储过程,将指定零件的重量增加指定的值,在 SQL 窗口中给出过程调用语句块。

 创建存储过程 P4 执行语句前 P1 的情况 执行 SQL 语句

 执行 SQL 语句后的 P1

  5.创建存储过程,查询供应量在指定范围内的零件名称和供应商名,在过程体中将结果输出到输出窗口,并在 SQL 窗口中给出过程调用语句块。

 创建的存储过程 P5 执行 SQL 语句

 执行结果

 6.(1)删除 SPJ 关系中所有数据。

 删除语句 已清空数据 (2)在插入和修改 SPJ 表中 QTY 属性列的值时用触发器实现约束:如果是北京的供应商,供应任何零件的数量不能少于 300,如果少于则自动改为 300。

 (3)在 SPJ 表中录入值进行验证。

 执行结果 7.(1)删除 SC 关系中的所有数据。

 SC 表已经清空

 (2)在 SC 关系中增加新属性列 Status,用来记录课程成绩的等级。

 新增加的 Status 列 (3)用触发器实现自动记录成绩等级,当插入和修改 grade 列的值时,如果 grade 在 0-59 分,status 自动填写为“不及格”;grade 在 60-69 分,status自动填写为“及格”;grade 在 70-89 分,status 自动填写为“良好”;grade在 90 以上 status 自动填写为“优秀”。

 创建的触发器

 (4)在 SC 表中录入值进行验证。

 执行插入操作时候的运行结果 执行更新操作时候的运行结果 8.创建触发器,实现在转专业记录表 change_major 中自动登记转专业信息,即当修改学生表中属性列 major 的值时,系统自动在 change_major 中插入一条转专业的信息(注:change_major 中的 id 属性列可设置为自动增长,具体参照课堂讲解的例题)。

 ID 自动增长语句 创建的触发器 t3 最终运行结果

 三、实验总结

  总结:本次实验在查阅了大量资料的前提下通过反复看视频,看 PPT 才完成。基本上知道了存储器,游标和触发器的创建语句,以及使用方法。但相对来说不是很熟练。有空还得多加练习 SQL 语句。