当前位置:文档之家› 《数据库系统概论》实验报告

《数据库系统概论》实验报告

《数据库系统概论》实验报告
题目:实验三存储过程/触发器/ODBC编程
姓名班级学号日期
郭智超10010507 052626 2007-10-14
一. 实验内容和步骤结果
1.在查询分析器中使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。

(5分)
源程序:create view V_SPJ
as select jno,sno
from spj
where jno='j2'
exec sp_rename 'V_SPJ','V_SPJ_三建'
执行结果:
变为
2.存储过程的创建与使用:(45分)
(1)使用SPJ数据库中的S表、P表、J表、SPJ表,创建一个带参数的存储过程—jsearch。

该存储过程的作用是:当任意输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME)以及工程的名称(JNAME)
源程序:create procedure jsearch
@jno char(4)
as select sname,pname,jname
from spj,s,p,j
where j.jno=@jno
and spj.jno=j.jno
and spj.sno=s.sno
and spj.pno=p.pno
(2) 执行jsearch存储过程,查询“J1”对应的JNAME,SNAME和PNAME。

源程序:exec jsearch j1
执行结果:
(3)使用系统存储过程sp_helptext查看存储过程jsearch的文本信息。

源程序:sp_helptext jsearch
执行结果:
(4)使用SPJ数据库中的S表,为其创建一个加密的存储过程—jmsearch。

该存储过程的作用是:当执行该存储过程时,将返回北京供应商的所有信息。

源程序:create procedure jmsearch with encryption
as select sno,sname,status,city
from s
where s.city='北京'
(5)执行jmsearch存储过程,查看北京供应商的情况。

源程序:exec jmsearch.
执行结果:
(6)删除jmsearch存储过程。

源程序:drop proc jmsearch
执行结果:jmsearch被删除。

3.触发器的创建与使用:(40分)
(1)在student数据库中建立一个名为insert_sdept的INSERT触发器,存储在S 表中。

该触发器的作用是:当用户向S表中插入记录时,如果插入的sdept值
为’CS’,’IS’,’MA’以外的值,则提示用户“不能插入记录这样的纪录”,否
则提示“记录插入成功”。

触发器创建成功之后,在企业管理器中向S表插入
记录,验证触发器是否正常工作。

源程序:
create trigger insert_sdept
on s
for insert
as declare @sdept char(2)
select @sdept=sdept
from inserted
if (@sdept='CS'or @sdept='IS'or @sdept='MA')
print ('记录插入成功!')
else print('不能插入这样的纪录')
begin
rollback tran
end
执行结果:当在企业管理器中插入sdept不是要求的时,无法插入。

(2)为student数据库中的S表创建一个名为dele_s1的DELETE触发器,该触发器的作用是禁止删除S表中的记录。

触发器创建成功之后,在企业管理器中删除
S表中的记录,验证触发器是否正常工作。

源程序:
Create trigger dele_s1
On s
instead of delete
as
print('禁止删除!!!')
执行结果:s表中的记录无法删除!!!
(3)为student数据库中的S表创建一个名为dele_s2的DELETE触发器,该触发器的作用是禁止删除S表中的记录时删除SC表中该学生的选课纪录。

触发器创
建成功之后,在企业管理器中删除S表中的记录,验证触发器是否正常工作(SC 表中的数据被正常删除)。

源程序:
create trigger dele_s2
on s
for delete
as
delete
from sc
where sno in (select sno from deleted)
执行结果:当s表中95001记录被删除时
Sc表中相应记录也被删除。

(4)为student数据库中的S表创建一个名为update_s的UPDATE触发器,该触发器的作用是禁止更新S表中“sdept”字段的内容。

触发器创建成功之后,在
企业管理器中更新S表中“sdept”字段的内容,验证触发器是否正常工作。

源程序:
create trigger update_s
on s
instead of update
as if update (sdept)
print('禁止更新')
begin
rollback tran
end
执行结果:s表中开始纪录是:
下面把张立改为大头,
当重新打开(刷新)后,张立并没有更新为大头。

(5)禁用update_s触发器。

禁用之后,在企业管理器中更新S表中的“sdept”字段的内容,验证触发器是否还继续正常工作。

源程序:alter table s disable trigger update_s
执行结果:如上题图,将刘晨的sdept改为MV,
(6)删除update_s触发器。

源程序:drop trigger update_s
执行结果:
4.ODBC配置以及程序调试:(10分)
(1)配置一个ODBC数据源,要求数据源名称:student,其中包含s(学生信息)表。

2,
3.
4.
5
(2)阅读并运行实验给出的程序,理解ODBC编程,要求简单写出自己对这段程序的理解,并且请给出程序运行结果示例图。

二. 实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)
1.基本上没有太大问题,就是最后的代码没有看懂。

批阅者:
批阅日期:
实验成绩:
批注:
一.。

相关主题