掌握数据库PL/SQL编程语言,以及数据库存储过程的设计和使用方法。
存储过程定义,存储过程运行,存储过程的参数传递。掌握PL/SQL编程语言和编程规范,规范设计存储过程。
已知学生管理系统数据库xsgl,有5个数据表xsgl_user,xsgl_major,xsgl_student,xsgl_course和xsgl_score,分别存储用户、专业、学生、课程和成绩数据,如下图所示。 用SQL语言实现以下: 1、定义存储过程proCourseAvg,该存储过程的功能是根据输入的课程名称,统计该课程的选课人数和平均分,并返回统计结果。 ①定义存储过程
--定义存储过程: create procedure proCourseAvg(@course_name Varchar(30),@cnt int output,@avg_score int output) as select @cnt=Count(stud_no),@avg_score=Avg(xsgl_score.score_score) from xsgl_score,xsgl_course where xsgl_score.course_no= xsgl_course.course_no and xsgl_course.course_name=@course_name group by(xsgl_score.course_no)②执行结果
--执行结果: Ps:以C语言为例 declare @course_name Varchar(30),@cnt int ,@avg_score int exec proCourseAvg 'C语言',@cnt output,@avg_score output print @cnt print @avg_score2、定义存储过程proStudentAvg,该存储过程的功能是根据输入的同学学号,统计该同学的平均分,并返回该同学的姓名和平均分。 以上每个存储过程定义后,给出执行结果。 ①定义存储过程
--定义存储过程 create Procedure proStudentAvg(@sid varchar(20),@sname varchar(20) output,@avg_score int output) as select @sname=xsgl_student.stud_name,@avg_score=avg(score_score) from xsgl_score,xsgl_student where xsgl_student.stud_no=xsgl_score.stud_no and xsgl_student.stud_no=@sid group by(stud_name)②执行结果
--以学号202的学生为例 declare @sname varchar(20),@avg_score int exec proStudentAvg '202',@sname output,@avg_score output print @sname print @avg_score