存储过程触发器ODBC数据库编程实验报告.docx
- 文档编号:17988238
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:12
- 大小:616.29KB
存储过程触发器ODBC数据库编程实验报告.docx
《存储过程触发器ODBC数据库编程实验报告.docx》由会员分享,可在线阅读,更多相关《存储过程触发器ODBC数据库编程实验报告.docx(12页珍藏版)》请在冰点文库上搜索。
存储过程触发器ODBC数据库编程实验报告
《数据库系统概论》实验报告
题目:
实验四
存储过程/触发器/ODBC数据库编程
姓名
班级
学号
日期
2010-10-25
1.实验内容和步骤结果
1.使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”:
sp_rename'V_SPJ','V_SPJ_三建'
2.存储过程的创建与使用:
(共计45分)
(1)使用SPJ数据库中的S表、P表、J表、SPJ表,创建一个带参数的存储过程—jsearch。
该存储过程的作用是:
当任意输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME)以及工程的名称(JNAME)。
执行jsearch存储过程,查询“J1”对应的信息。
(10分)
CREATEProcedurejsearch(@SPJ_JNOchar(10))
AS
BEGIN
SELECTSNAME,PNAME,JNAME
FROMSPJ,S表,P表,J表
WHERE@SPJ_JNO=SPJ.JNOAND
SPJ.JNO=J表.JNOAND
SPJ.PNO=P表.PNOAND
SPJ.SNO=S表.SNO
END;
jsearch'J1'
(2)创建一个带有输出游标参数的存储过程jsearch2,功能同1),执行jsearch2,查询“J1”对应信息,并且将得到的结果用print语句输出到控制台。
(10分)
CREATEPROCEDUREjsearch2(@jnochar(10),
@SPJ_CURSORCURSORVARYINGOUTPUT)AS
set@SPJ_CURSOR=CURSOR
FOR
SELECTJ表.JNAME,P表.PNAME,S表.SNAME
fromS表,P表,J表,SPJ
whereSPJ.JNO=@jnoand
S表.SNO=SPJ.SNOand
J表.JNO=SPJ.JNOand
P表.PNO=SPJ.PNO
open@SPJ_CURSOR
declare@jnamechar(10),@snamechar(10),@pnamechar(10)
declare@SPJ_CURSORcursor
execjsearch2'J1',@SPJ_CURSORoutput
fetchnextfrom@SPJ_CURSORinto@jname,@pname,@sname
while(@@FETCH_STATUS=0)
begin
print(@jname+@pname+@sname)
fetchnextfrom@SPJ_CURSORinto@jname,@pname,@sname
end
close@SPJ_CURSOR
deallocate@SPJ_CURSOR
go
(3)使用SPJ数据库中的S表,为其创建一个加密的存储过程—jmsearch。
该存储过程的作用是:
当执行该存储过程时,将返回北京供应商的所有信息。
(10分)
createprocjmsearch
withencryption
as
selectS表.SNAME,S表.SNO,S表.status
fromS表
whereS表.CITY='北京'
(4)使用系统存储过程sp_helptext查看存储过程jsearch,jmsearch的文本信息。
(5分)
execsp_helptextjsearch
execsp_helptextjmsearch
(5)执行jmsearch存储过程,查看北京供应商的情况。
(5分)
execjmsearch
(6)删除jmsearch存储过程。
(5分)
USE[SPJ]
GO
IFEXISTS(SELECT*FROMsys.objectsWHEREobject_id=OBJECT_ID(N'[dbo].[jmsearch]')ANDtypein(N'P',N'PC'))
DROPPROCEDURE[dbo].[jmsearch]
GO
3.触发器的创建与使用:
(共计30分,每小题5分)
(1)在student数据库中建立一个名为insert_s的INSERT触发器,存储在S表中。
该触发器的作用是:
当用户向S表中插入记录时,如果插入的sdept值为’CS’,’IS’,’MA’以外的值,则提示用户“不能插入记录这样的纪录”,否则提示“记录插入成功”。
触发器创建成功之后,向S表插入记录,验证触发器是否正常工作。
createtriggerinsert_sons
forinsertas
if((selectsdeptfrominserted)in('CS','IS','MA'))
begin
print'记录插入成功'
end
elseprint'不能插入记录这样的纪录'
insertintosvalues('95005','曾伟','男','1989/07/03','TS')
(2)为student数据库中的S表创建一个名为dele_s1的DELETE触发器,该触发器的作用是禁止删除S表中的记录。
触发器创建成功之后,删除S表中的记录,验证触发器是否正常工作。
createtriggerdele_s1ons
insteadofdelete
asprint'不能删除'
deletefromswheres.sno='95001'
select*froms
droptriggerdele_s1;
(3)为student数据库中的S表创建一个名为dele_s2的DELETE触发器,该触发器的作用是删除S表中的记录时删除SC表中该学生的选课纪录。
触发器创建成功之后,删除S表中的记录删除S表中的记录,验证触发器是否正常工作(SC表中的数据被正常删除)。
createtriggerdele_s2onsfordelete
asdeletefromscwheresc.snoin(selectsnofromdeleted)
deletefromswheres.sno='95001'
select*fromSC
(4)为student数据库中的S表创建一个名为update_s的UPDATE触发器,该触发器的作用是禁止更新S表中“sdept”字段的内容。
触发器创建成功之后,更新S表中“sdept”字段的内容,验证触发器是否正常工作。
(5分)
createtriggerupdate_sonsforupdate
asifupdate(sdept)
begin
print'不能更新sdept字段'
rollbacktran
end
updatessetSdept='IS'wheresno='95000'
droptriggerupdate_s
(5)禁用update_s触发器。
禁用之后,更新S表中的“sdept”字段的内容,验证触发器是否还继续正常工作。
禁用:
altertablesdisabletriggerupdate_s
updatessetSdept='MA'wheresno='95002'
启用:
altertablesenabletriggerupdate_s
updatessetSdept='IS'wheresno='95002'
(6)删除update_s触发器。
droptriggerupdate_s
4.ODBC配置以及程序调试:
(20分)
(1)配置一个ODBC数据源,要求数据源名称:
student,其中包含s(学生信息)表。
2.实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)
本次实验难点较多,书本上有的没有现成的例题,只有通过查询资料和询问老师来解决。
不过学到了很多!
批阅者:
批阅日期:
实验成绩:
批注:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 过程 触发器 ODBC 数据库 编程 实验 报告