西工大第四次数据库实验报告.docx
- 文档编号:23074287
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:12
- 大小:2.14MB
西工大第四次数据库实验报告.docx
《西工大第四次数据库实验报告.docx》由会员分享,可在线阅读,更多相关《西工大第四次数据库实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
西工大第四次数据库实验报告
《数据库系统概论》实验报告
题目:
实验四
存储过程/触发器/ODBC数据库编程
姓名
班级
学号
日期
刘凯
10031201
2012302606
2014.11
一、实验内容、步骤以及结果
1.使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。
sp_rename'V_SPJ','V_SPJ_三建'
2.存储过程的创建与使用:
(1)使用SPJ数据库中的S表、P表、J表、SPJ表,创建一个带参数的存储过程—jsearch。
该存储过程的作用是:
当任意输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME)以及工程的名称(JNAME)。
执行jsearch存储过程,查询“J1”对应的信息。
CREATEPROCEDUREjsearch(@SPJ_JNOCHAR(10))
AS
BEGINSELECTSNAME,PNAME,JNAME
FROMSPJ,S,P,J
WHERE@SPJ_JNO=SPJ.JNOANDSPJ.JNO=J.JNOANDSPJ.PNO=P.PNOANDSPJ.SNO=S.SNO
END;
(2)创建一个带有输出游标参数的存储过程jsearch2,功能同1),执行jsearch2,查询“J1”对应信息,并且将得到的结果用print语句输出到控制台。
CREATEPROCEDUREjsearch2(@SPJ_JNOCHAR(10),@SPJ_CURSORCURSORVARYINGOUTPUT)
AS
SET@SPJ_CURSOR=CURSOR
FOR
SELECTS.SNAME,P.PNAME,J.JNAME
FROMSPJ,S,P,J
WHERE@SPJ_JNO=SPJ.JNOANDSPJ.JNO=J.JNOANDSPJ.PNO=P.PNOANDSPJ.SNO=S.SNO
OPEN@SPJ_cursor
jsearch'J1'
(3)使用SPJ数据库中的S表,为其创建一个加密的存储过程—jmsearch。
该存储过程的作用是:
当执行该存储过程时,将返回北京供应商的所有信息。
CREATEPROCEDUREjmsearch
WITHENCRYPTION
AS
BEGINSELECTS.SNAME,S.SNO,S.STATUS
FROMS
WHERES.CITY='北京'
END;
BEGIN
DECLARE@SNAMEchar(10)
DECLARE@PNAMEchar(10)
DECLARE@JNAMEchar(10)
DECLARE@SPJ_cursorCURSOR
EXECjsearch2'J1',@SPJ_cursorOUTPUT
FETCHNEXTFROM@SPJ_cursorINTO@SNAME,@PNAME,@JNAME
WHILE(@@FETCH_STATUS=0)
BEGIN
PRINT(@SNAME+@PNAME+@JNAME)
FETCHNEXTFROM@SPJ_cursorINTO@SNAME,@PNAME,@JNAME
END
CLOSE@SPJ_cursor
DEALLOCATE@SPJ_cursor
END
GO
(4)使用系统存储过程sp_helptext查看存储过程jsearch,jmsearch的文本信息。
execsp_helptextjsearch
EXECsp_helptextjmsearch
(5)执行jmsearch存储过程,查看北京供应商的情况。
EXECjmsearch
(6)删除jmsearch存储过程。
DROPprocedurejmsearch
3.触发器的创建与使用:
(1)在student数据库中建立一个名为insert_s的INSERT触发器,存储在S表中。
该触发器的作用是:
当用户向S表中插入记录时,如果插入的sdept值为’CS’,’IS’,’MA’以外的值,则提示用户“不能插入记录这样的纪录”,否则提示“记录插入成功”。
触发器创建成功之后,向S表插入记录,验证触发器是否正常工作。
USEStudent
GO
CREATETRIGGERinsert_s
ONS
FORINSERT
AS
IF((SELECTSdeptFROMINSERTED)IN('CS','IS','MA'))
BEGIN
PRINT'记录数据成功'
END
ELSEPRINT'不能插入记录这样的数据'
USEStudent
GO
INSERTINTOSVALUES('2012302607','葛兴','男','1993/01/01','IS')
(2)为student数据库中的S表创建一个名为dele_s1的DELETE触发器,该触发器的作用是禁止删除S表中的记录。
触发器创建成功之后,删除S表中的记录,验证触发器是否正常工作。
USEStudent
GO
CREATETRIGGERdele_s1
ONS
INSTEADOFDELETE
AS
PRINT'不能删除'
USEStudent
GO
DELETEFROMSWHERES.sno='2012302607'
SELECT*FROMS
DROPTRIGGERdele_s1;
(3)为student数据库中的S表创建一个名为dele_s2的DELETE触发器,该触发器的作用是删除S表中的记录时删除SC表中该学生的选课纪录。
触发器创建成功之后,删除S表中的记录删除S表中的记录,验证触发器是否正常工作(SC表中的数据被正常删除)。
USEStudent
GO
CREATETRIGGERdele_s2
ONS
FORDELETE
AS
DELETEFROMSCWHERESC.snoIN(SELECTsnoFROMDELETED)
DELETEFROMSWHERES.sno='95001'
SELECT*FROMSC
(4)为student数据库中的S表创建一个名为update_s的UPDATE触发器,该触发器的作用是禁止更新S表中“sdept”字段的内容。
触发器创建成功之后,更新S表中“sdept”字段的内容,验证触发器是否正常工作。
USEStudent
GO
CREATETRIGGERupdate_s
ONS
INSTEADOFUPDATE
AS
PRINT'不能更新'
USEStudent
GO
UPDATESSETSdept='MA'WHERES.sno='2012302607'
(5)禁用update_s触发器。
禁用之后,更新S表中的“sdept”字段的内容,验证触发器是否还继续正常工作。
USEStudent
GO
ALTERTABLESDISABLETRIGGERupdate_s
USEStudent
GO
UPDATESSETSdept='MA'WHERES.sno='2012302607'
(6)删除update_s触发器。
USEStudent
GO
DROPTRIGGERupdate_s
4.ODBC配置以及程序调试:
(1)配置一个ODBC数据源,要求数据源名称:
student,其中包含s(学生信息)表。
(2)阅读并运行实验给出的程序,理解ODBC编程,要求简单写出自己对这段程序的理解或者流程图,并且请给出程序运行结果示例图。
二、实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)
本次试验进行了触发器、存储过程以及数据库等应用技术进行了实验,本次试验相对前几次来说比较困难,对于第一次做这些实验,刚开始实在不知道该怎么写程序,而且很多sql语句经常是改了又改,不是很熟练,不过做到最后,还是略知一二,后面的实验内容也就相对简单了一些,找到了一些方法,本次试验遇到了一些问题,后来经过和同学的相互商讨,最终解决,这为大作业奠定了一定的基础。
批阅者:
批阅日期:
实验成绩:
批注:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西工大第 四次 数据库 实验 报告