第13次实验2012-答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

存储过程的创建和使用

( 1) 创建简单存储过程

创建一个名为stu_pr的存储过程:该存储过程能查询出学号前8位为‘ 20154103'的学生所有资料,包括学生的基本信息、学生的选课信息(含未选课同学的信息) 。要求在创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出“已删除!”信息,否则就给出“不存在,可创建!”的信息。

IF EXISTS ( SELECTname FROMsysobjects WHEREname = 'stu_pr' AND type = 'P' )

BEGIN

DROPPROCEDURsEtu_pr

PRINT ' 已删除!'

END

ELSE

PRINT ' 不存在,可创建!'

GO

CREATEPROCEDURsEtu_pr

AS

SELECT*

FROMstudent left join sc on student .id =sc.id

WHERELEFT ( student . id , 8)= '20154103'

GO

STU_PR

(2)创建带参数的存储过程

a) 创建一个名为stu_proc1 的存储过程:查询某姓名的学生的学号、姓名、年龄,选修课程名、成绩。姓名在调用该存储过程时输入,其默认值为“王%”。执行该存储过程,用多种

参数加以测试。

create procedure stu_proc1

@namenvarchar (8)=' 王%'

as

select 学号=s. id ,姓名=name 年龄=age,选修课程名=coursename,成绩=score

from student s,sc,course

where name like @nameand s. id =sc. id and sc. courseid =course .courseid

go

stu_proc1

go

stu_proc1 ' 张%'

go

stu_proc1 ' 郭贺'

b)创建一个名为t_student_t_score的存储过程:可查询出某学号段的同学的学号、姓名、

总成绩。( 学号起始号与终止号在调用时输入,可设默认值,如:

‘201541030103' -‘201541030108')。执行该存储过程create procedure t_student_t_score @lowx char ( 12)= '201541030103' , @upx char ( 12)= '201541030108' as

select 学号=s. id ,姓名=n ame总成绩=sum( score ) from student s,sc

where s.id =sc. id and s. id >=@lowx and s. id <=@upx group by s. id , name

go t_student_t_score go

t_student_t_score '201541030101' , '201541030103'

(3)创建带输出参数的存储过程

a)创建一个名为t_course_average的存储过程,可查询某门课程(输入课号)考试的平均成绩。平均成绩可以输出,以便进一步调用。

create procedure t_course_average

@cnchar (5),

@avreal output

as

select @av=avg ( score )

from sc

where courseid =@cn

go

declare @screal

execute t_course_average '20001' , @sc output

select @sc

b) 创建执行该存储过程的批处理,要求当平均成绩小于60 时,显示信息为:“XX 课程的平均成绩为:XX ,其平均分未达60 分”。超过60时,显示信息为:“XX 课程的平均成绩为:XX ”。

declare @screal , @sr char (5)

set @sr = '20001'

execute t_course_average @sr, @sc output

if @sc<60

print @sr+' 课程的平均成绩为:' +str (@sc, 5, 2)+' ,其平均分未达60分' else

print @sr+' 课程的平均成绩为:' +str (@sc, 5, 2)

(4)使用T-SQL语句管理和维护存储过程

a)使用sp_helptext查看存储过程t_student_t_score的定义脚本。

exec sp_helptext t_student_t_score

b)使用select语句查看t_student_t_score存储过程的sysobjects信息。select * from sysobjects

where name = 't_student_t_score'

c)将存储过程stu_pr改为查询学号为201541030103的学生的详细资料alter procedure stu_pr

as

select *

from student s left join sc on s. id =sc.id

where s.id ='201541030103'

go

execute stu_pr

d)删除存储过程stu_pr。

drop procedure stu_pr

相关文档
最新文档