数据库第四次实验.docx
- 文档编号:5737436
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:13
- 大小:273.27KB
数据库第四次实验.docx
《数据库第四次实验.docx》由会员分享,可在线阅读,更多相关《数据库第四次实验.docx(13页珍藏版)》请在冰点文库上搜索。
数据库第四次实验
《数据库系统概论》实验报告
题目:
实验5存储过程/触发器/ODBC数据库编程
姓名
班级
学号
日期
2012-10-23
5.1目的与要求
1.掌握查看一些系统存储过程的用法。
2.掌握存储过程的创建和使用方法以及步骤。
3.掌握触发器的创建和使用方法以及步骤。
4.掌握ODBC数据源的配置,了解ODBC编程技术。
5.2实验准备
1.了解存储过程(系统存储过程以及用户自定义存储过程)基本概念和类型。
2.了解创建存、查看、执行、修改和删除储过程的SQL语句的基本语法。
3.了解触发器的基本概念和类型。
4.了解创建、查看、修改和删除触发器的SQL语句的基本语法。
5.了解ODBC数据库配置和编程知识。
5.3实验内容
1.使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。
T-SQL源码:
execsp_renamev_spj,v_spj_三建;
2.存储过程的创建与使用:
(1)使用SPJ数据库中的S表、P表、J表、SPJ表,创建一个带参数的存储过程—jsearch。
该存储过程的作用是:
当任意输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME)以及工程的名称(JNAME)。
T-SQL源码:
createprocjsearch
@jnochar(4)
asselectsname,pname,jnamefroms,p,j,spj
wheres.sno=spj.snoandp.pno=spj.pnoandj.jno=spj.jnoandspj.jno=@jno;
执行:
execjsearch'J1'
执行结果:
(2)创建一个带有输出游标参数的存储过程jsearch2,功能同),执行jsearch2,
--查询“J1”对应信息,并且将得到的结果用print语句输出到控制台。
(需要使用游标)
T-SQL源码:
createprocjsearch2
@jnochar(10),@names_cursorcursorvaryingoutput
as
set@names_cursor=cursor
for
selects.sname,p.pname,j.jnamefroms,p,j,spj
wherespj.sno=s.snoandspj.pno=p.pnoandspj.jno=j.jnoandspj.jno=@jno
open@names_cursor
执行:
begin
declare@snamechar(10)
declare@pnamechar(10)
declare@jnamechar(10)
declare@mycursorcursor
execjsearch2'j1',@names_cursor=@mycursoroutput
fetchnextfrom@mycursorinto@sname,@pname,@jname
while(@@fetch_status=0)
begin
print'sname:
'+@sname+'pname:
'+@pname+'jname:
'+@jname
fetchnextfrom@mycursorinto@sname,@pname,@jname
end
close@mycursor
deallocate@mycursor
end
执行结果:
(3)使用SPJ数据库中的S表,为其创建一个加密的存储过程—jmsearch。
该存储过程的作用是:
当执行该存储过程时,将返回北京供应商的所有信息。
T-SQL源码:
createprocjmsearchwithencryption
as
select*fromswheres.city='北京';
执行:
sp_helptextjmsearch;
执行结果:
(4)使用系统存储过程sp_helptext查看存储过程jsearch,jmsearch的文本信息。
T-SQL源码:
execsp_helptextjsearch;
执行结果:
(5)执行jmsearch存储过程,查看北京供应商的情况。
T-SQL源码:
execjmsearch;
执行结果:
(6)删除jmsearch存储过程。
T-SQL源码:
dropprocjmsearch;
3.触发器的创建与使用:
(1)在student数据库中建立一个名为insert_sdept的INSERT触发器,存储在S表中。
该触发器的作用是:
当用户向S表中插入记录时,如果插入的sdept值为’CS’,’IS’,’MA’以外的值,则提示用户“不能插入这样的纪录”,否则提示“记录插入成功”。
触发器创建成功后,
向S表插入记录,验证触发器是否正常工作。
T-SQL源码:
droptriggerinsert_sdept
createtriggerinsert_sdeptons
forinsertas
if((selectsdeptfrominserted)in('CS','IS','MA'))
begin
print'记录插入成功'
end
else
begin
rollbacktran
print'不能插入这样的纪录'
end
测试触发器
T-SQL源码:
insertintosvalues('95000','Ricord','男','1986-1-1','CS');
执行结果:
insertintosvalues('95008','刘星','男','1986/1/1','BS');
执行结果:
(2)为student数据库中的S表创建一个名为dele_s1的DELETE触发器,该触发器的作用是禁止删除S表中的记录。
触发器创建成功之后,删除S表中的记录,验证触发器是否正常工作。
T-SQL源码:
createtriggerdele_s1ons
insteadofdelete
asprint('不能删除')
测试触发器
T-SQL源码:
deletefromswheres.sno='95001'
执行结果:
(3)为student数据库中的S表创建一个名为dele_s2的DELETE触发器,该触发器的作用是删除S表中的记录时删除SC表中该学生的选课纪录。
触发器创建成功之后,删除S表中的记录,验证触发器是否正常工作(SC表中的数据被正常删除)。
T-SQL源码:
createtriggerdele_s2onsfordelete
asdeletefromscwheresc.snoin(selectsnofromdeleted)
(4)为student数据库中的S表创建一个名为update_s的UPDATE触发器,该触发器的作用是禁止更新S表中“sdept”字段的内容。
触发器创建成功之后,更新S表中“sdept”字段的内容,验证触发器是否正常工作。
T-SQL源码:
createtriggerupdate_sonsforupdate
asifupdate(sdept)
begin
print('不能更新sdept字段')
rollbacktran
end
测试触发器
T-SQL源码:
updatessetsdept='IS'wheresno='95000'
执行结果:
(5)禁用update_s触发器。
禁用之后,更新S表中的“sdept”字段的内容,验证触发器是否还继续正常工作。
T-SQL源码:
altertablesdisabletriggerupdate_s
(6)删除update_s触发器。
T-SQL源码:
droptriggerupdate_s
4.ODBC配置以及程序调试(win8企业版系统):
(1)配置一个ODBC数据源,要求数据源名称:
student,其中包含s(学生信息)表。
1、
3、点击“添加按钮”,进入“创建新数据源向导”。
4、选择数据库驱动程序,因为是微软的SQLServer数据库,所以选择驱动为SQLServer。
点击完成。
5、进入如下页面,在名称,描述,和服务器三个位置分别自己写描述信息。
需要注意的是在输入服务器的时候,服务器的名称应该在启动SqlServer数据库管理程序时的服务器名称一样。
服务器名是Ricord为电脑名。
点击下一步。
6、用户登录验证,选择WindowsNT验证。
7、选择需要用到的数据库。
下拉列表列出了所有可以连接的数据库。
8、点击下一步。
其余选项默认,点击完成就可以。
结果出现已经测试画面,显示测试成功。
则我们的数据源DSN创建成功。
(2)阅读并运行实验给出的程序,理解ODBC编程,要求简单写出自己对这段程序的理解或者流程图,并且请给出程序运行结果示例图。
运行结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 第四 实验