存储过程触发器ODBC数据库编程实验报告.docx

上传人:b****8 文档编号:30157463 上传时间:2023-08-05 格式:DOCX 页数:12 大小:616.29KB
下载 相关 举报
存储过程触发器ODBC数据库编程实验报告.docx_第1页
第1页 / 共12页
存储过程触发器ODBC数据库编程实验报告.docx_第2页
第2页 / 共12页
存储过程触发器ODBC数据库编程实验报告.docx_第3页
第3页 / 共12页
存储过程触发器ODBC数据库编程实验报告.docx_第4页
第4页 / 共12页
存储过程触发器ODBC数据库编程实验报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

存储过程触发器ODBC数据库编程实验报告.docx

《存储过程触发器ODBC数据库编程实验报告.docx》由会员分享,可在线阅读,更多相关《存储过程触发器ODBC数据库编程实验报告.docx(12页珍藏版)》请在冰豆网上搜索。

存储过程触发器ODBC数据库编程实验报告.docx

存储过程触发器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.实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)

本次实验难点较多,书本上有的没有现成的例题,只有通过查询资料和询问老师来解决。

不过学到了很多!

批阅者:

批阅日期:

实验成绩:

批注:

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

当前位置:首页 > 成人教育 > 远程网络教育

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

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