数据库实验报告4分析解析.docx

上传人:b****1 文档编号:412558 上传时间:2022-10-09 格式:DOCX 页数:13 大小:99.78KB
下载 相关 举报
数据库实验报告4分析解析.docx_第1页
第1页 / 共13页
数据库实验报告4分析解析.docx_第2页
第2页 / 共13页
数据库实验报告4分析解析.docx_第3页
第3页 / 共13页
数据库实验报告4分析解析.docx_第4页
第4页 / 共13页
数据库实验报告4分析解析.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数据库实验报告4分析解析.docx

《数据库实验报告4分析解析.docx》由会员分享,可在线阅读,更多相关《数据库实验报告4分析解析.docx(13页珍藏版)》请在冰豆网上搜索。

数据库实验报告4分析解析.docx

数据库实验报告4分析解析

华中敏20122211042100522012级计科一班

存储过程的创建和使用

1:

创建一个名称为“StuInfo”的存储过程,要求完成以下功能:

在T_STUDENT表中查询05541班学生的学号、姓名、性别、出生日期和政治面貌五个字段的内容。

CREATEPROCEDUREStuInfo

AS

SelectS_NUMBERAS学号,

S_NAMEAS姓名,

SEXAS性别,

BIRTHDAYAS出生日期,

POLITYAS政治面貌

FROMT_STUDENT

WHERELEFT(S_NUMBER,5)='05541'

2:

创建一个存储过程StuScoreInfo,完成的功能是在表T_STUDENT、表T_COURSE和表t_SCORE中查询以下字段:

班级、学号、姓名、性别、课程名称、考试分数。

--打开STUDENT数据库USESTUDENT

--查询是否已存在此存储过程,如果存在,就删除它

IFEXISTS(SELECTnameFROMsysobjects

WHEREname='StuScoreInfo'ANDtype='P')

DROPPROCEDUREStuScoreInfo

GO

--创建存储过程

CREATEPROCEDUREStuScoreInfo

ASSelect班级=SUBSTRING(T_STUDENT.S_NUMBER,1,

LEN(T_STUDENT.S_NUMBER)-2),

学号=SUBSTRING(T_STUDENT.S_NUMBER,

LEN(T_STUDENT.S_NUMBER)-1,2),

T_STUDENT.S_NAMEAS姓名,

SEXAS性别,

T_COURSE.C_NAMEAS课程名称,

T_SCORE.SCOREAS考试分数

FROMT_STUDENT,T_COURSE,T_SCORE

WHERET_STUDENT.S_NUMBER=t_SCORE.S_NUMBERANDT_COURSE.C_NUMBER=t_SCORE.C_NUMBER

GO

3:

创建一个带有参数的存储过程Stu_Info,该存储过程根据传入的学生编号,在T_STUDENT中查询此学生的信息。

--删除已存在的存储过程

USEStudent_back

IFEXISTS(SELECTnameFROMsysobjects

WHEREname='Stu_Info'ANDtype='P')

DROPPROCEDUREStu_Info

GO

--创建存储过程

USEStudent_back

GO

CREATEPROCEDUREStu_Info

@S_NUMBERvarchar(10)

AS

Select班级=SUBSTRING(T_STUDENT.S_NUMBER,1,

LEN(T_STUDENT.S_NUMBER)-2),

学号=SUBSTRING(T_STUDENT.S_NUMBER,

LEN(T_STUDENT.S_NUMBER)-1,2),

S_NAMEAS姓名,

SEXAS性别,

BIRTHDAYAS出生日期,

POLITYAS政治面貌

FROMT_STUDENT

WHERES_NUMBER=@S_NUMBER

GO

4:

创建一个带有参数的存储过程Stu_Age,该存储过程根据传入的学生编号,在T_STUDENT中计算此学生的年龄,并根据程序的执行结果返回不同的值,程序执行成功,返回整数0,如果执行出错,则返回错误号。

USEStudent_back

IFEXISTS(SELECTnameFROMsysobjects

WHEREname='Stu_Age'ANDtype='P')

DROPPROCEDUREStu_Age

GO

--创建存储过程

USEStudent_back

GO

CREATEPROCEDUREStu_Age

@S_NUMBERvarchar(10),

@AgeintOUTPUT

AS

--定义并初始化局部变量,用于保存返回值

DECLARE@ErrorValueint

SET@ErrorValue=0

--求此学生的年龄

SELECT@Age=YEAR(GETDATE())-YEAR(BIRTHDAY)

FROMT_STUDENT

WHERES_NUMBER=@S_NUMBER

--根据程序的执行结果返回不同的值

IF(@@ERROR<>0)

SET@ErrorValue=@@ERROR

RETURN@ErrorValue

GO

5:

行前面创建的StuInfo存储过程,它是一个无参的存储过程。

USEStudent_back

GO

StuInfo

6:

存储过程StuScoreInfo。

USEStudent_back

EXECStuScoreInfo

7:

执行存储过程Stu_Info,该存储过程有一个输入参数“学号”,在执行时需要传入一个学号值。

USEStudent_back

GO

EXECUTEStu_Info@S_NUMBER='0554101'

8:

执行存储过程Stu_Age,该存储过程有一个输入参数“学号”,另外,还有一个输出参数@Age。

存储过程执行完后,有一个返回的状态值,这个值可以从变量@ErrorValue得到。

USEStudent_back

GO

DECLARE@stuAgeint,

@ReturnValueint,

@S_NUMBERchar(10)

SET@S_NUMBER='0554101'

EXECUTE@ReturnValue=Stu_Age@S_NUMBER,@stuAgeOUTPUT

PRINT'本程序的执行结果:

'

PRINT'程序的返回值='+CAST(@ReturnValueASchar

(2))

PRINT'学号为"'+RTRIM(@S_NUMBER)+'"的学生的年龄是'

+CAST(@stuAgeASchar

(2))+'岁。

'

9:

使用系统存储过程查看Stu_Age存储过程的参数及其数据类型。

USEStudent_back

GO

sp_helpStu_Age

GO

10:

使用系统存储过程查看StuScoreInfo存储过程的相关的数据库对象。

USEStudent_back

GO

sp_dependsStuScoreInfo

GO

11:

修改前面创建的Stu_Info存储过程,使之完成以下功能:

根据传入的学号,在表T_STUDENT、表T_COURSE和表t_SCORE中查询此学生的班级、学号、姓名、性别、考试课程名称和考试分数。

USEStudent_back

GO

ALTERPROCEDUREStu_Info

@S_NUMBERvarchar(10)

AS

Select班级=SUBSTRING(T_STUDENT.S_NUMBER,1,LEN(T_STUDENT.S_NUMBER)-2),

学号=SUBSTRING(T_STUDENT.S_NUMBER,LEN(T_STUDENT.S_NUMBER)-1,2),

T_STUDENT.S_NAMEAS姓名,

SEXAS性别,

T_COURSE.C_NAMEAS课程名称,

SCOREAS考试成绩

FROMT_STUDENT,T_COURSE,t_SCORE

WHERET_STUDENT.S_NUMBER=@S_NUMBER

ANDT_STUDENT.S_NUMBER=t_SCORE.S_NUMBER

ANDT_COURSE.C_NUMBER=t_SCORE.C_NUMBER

GO

--执行修改后的Stu_Info存储过程:

USEStudent_back

GO

EXECStu_Info'0554101'

GO

12:

使用系统存储过程将Stu_Info存储过程的名称修改为Stu_Info_SCORE。

USEStudent_back

GO

Sp_renameStu_Info,Stu_Info_SCORE

GO

13:

使用DROP命令删除StuInfo和StuScoreInfo两个存储过程。

USEStudent_back

GO

DROPprocedureStuInfo,StuScoreInfo

GO

实验五:

触发器的创建和使用

1:

创建一个INSERT触发器“TR_Stu_Insert”,当在T_STUDENT表中插入一条新记录时,触发该触发器,并给出“你插入了一条新记录!

”的提示信息。

--================================================

--TemplategeneratedfromTemplateExplorerusing:

--CreateTrigger(NewMenu).SQL

--

--UsetheSpecifyValuesforTemplateParameters

--command(Ctrl-Shift-M)tofillintheparameter

--valuesbelow.

--

--SeeadditionalCreateTriggertemplatesformore

--examplesofdifferentTriggerstatements.

--

--Thisblockofcommentswillnotbeincludedin

--thedefinitionofthefunction.

--================================================

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

--=============================================

--Author:

Name

--Createdate:

--Description:

--=============================================

CREATETRIGGERdbo.TR_Stu_Insert

ONdbo.T_STUDENT

AFTERINSERT

AS

BEGIN

--SETNOCOUNTONaddedtopreventextraresultsetsfrom

--interferingwithSELECTstatements.

SETNOCOUNTON;

DECLARE@msgchar(30)

SET@msg='你插入了一条新记录!

'

PRINT@msg

--Insertstatementsfortriggerhere

END

GO

2:

创建了Stu_Insert触发器后,查看向T_STUDENT表中插入数据时,此触发器所完成的功能。

USEStudent_back

GO

insert

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1