实验六 游标、存储过程与触发器

更新时间:2023-11-26 02:07:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

信 息 工 程 学 院1

数据库原理与应用(SQL Server 2008) 实验/实习报告

存储过程与触发器

实验六 游标、存储过程与触发器

一、实验目的

掌握使用T-SQL实现游标、存储过程和触发器的创建,使用方法。

二、实验内容

在实验一、实验二创建的表中用T-SQL语句完成以下内容:

1.使用游标实现将SC表中及格的选课信息输出。

declare

@Sno varchar(10),@Cno varchar(10),@Grade int

declare cursor_SC cursor for select Sno,Cno,Grade from SC open cursor_SC

fetch cursor_SC into @Sno,@Cno,@Grade while(@@FETCH_STATUS=0)

begin end

if @Grade>=60

select @Sno sno,@Cno cno,@Grade grade

fetch cursor_SC into @Sno,@Cno,@Grade

close cursor_SC deallocate cursor_SC

实验报告的内容与格式按任课教师的要求书写。

2.使用游标将SPJ表中的偶数行输出。

declare

@sno varchar(10),@pno varchar(20),@jno varchar(10), @qty smallint ,@n int=2

declare cursor_SPJ cursor static for select sno,Pno,Jno,qty from SPJ open cursor_SPJ

fetch absolute @n from cursor_SPJ into @sno,@pno,@jno,@qty while(@@FETCH_STATUS=0)

begin end

select @sno sno,@pno pno,@jno pno,@qty qty set @n=@n+2

fetch absolute @n from cursor_SPJ into @sno,@pno,@jno,@qty

close cursor_SPJ

deallocate cursor_SPJ

3.创建存储过程,根据指定的学生姓名查询该学生所修课程的课程信息,将课程号和课程名输出,并使用exec语句执行存储过程。 创建存储过程:

CREATE PROCEDURE student_xx @s_name varchar(10) AS

SELECT Cname, SC.Cno FROM s,sc,c

WHERE s.sno=sc.sno and c.cno=sc.cno and Sname=@s_name 执行存储过程: EXEC student_xx '孙天'

孙天的学号为09105101,他的选课信息为:

对应的课程名为:

可知对应了,查询的结果。

4.创建存储过程,根据指定的学生学号统计该学生选修的所有课程的平均成绩和选课门数,将统计的结果用输出参数返回,并使用exec语句执行存储过程。 创建存储过程:

CREATE PROCEDURE Avg_Count

@S_Sno varchar(20), @avg_grade int output, @total int output AS

SELECT @avg_grade = AVG(Grade), @total = COUNT(*) FROM SC ,C

WHERE Sc.cno = C.cno and Sno=@S_Sno

使用exec语句执行存储过程:

Declare @a int,@b int

Exec Avg_Count '09105101' ,@a output,@b output Select @a avg_grade,@b total

他的平均分=(65+55+94+50)/4=66 ,可知,结果正确。

5.创建存储过程,根据用户指定的供应商号删除SPJ表中相应的供货信息,并使用exec语句执行存储过程。 创建存储过程:

CREATE PROCEDURE SPJ_gh @sn varchar(20) AS DELETE FROM SPJ WHERE @sn = Sno

本文来源:https://www.bwwdw.com/article/i3kt.html

Top