数据库系统原理——数据库编程

    技术2024-08-11  67

    数据库编程

    一、实验目的

    掌握数据库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_score

    2、定义存储过程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
    Processed: 0.018, SQL: 9