版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《数据库原理》实验报告实验名称学号姓名班级日期五触发器、存储过程和函数2013302536张林江100113032015-10-31实验五:触发器、存储过程和函数实验目的掌握系统存储过程的使用用法。掌握用户自定义的存储过程的创建和执行方法。掌握触发器的创建和执行方法。掌握用户自定义函数的创建和执行方法。实验内容1、使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。(5分)sp_rename'V_SPJ','VSPJ_三建'2、针对SPJ数据库,创建并执行如下的存储过程:(共计35分)创建一个带参数的存储过程—jsearch。该存储过程的作用是:当任意输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME)以及工程的名称(JNAME)。执行jsearch存储过程,查询“J1”对应的信息。(10分)CREATEProcedurejsearch(@SPJ_JNOchar(10))ASBEGINSELECTSNAME,PNAME,JNAMEFROMSPJ,S,P,JWHERE@SPJ_JNO=SPJ.JNOANDSPJ.JNO=J.JNOAND SPJ.PNO=P.PNOAND SPJ.SNO=S.SNOEND;输入下边命令,可得到结果jsearch'J1'(2)使用S表,为其创建一个加密的存储过程—jmsearch。该存储过程的作用是:当执行该存储过程时,将返回北京供应商的所有信息。(10分)CREATEPROCjmsearchWITHENCRYPTIONASSELECTS.SNAME,S.SNO,S.STATUSFROMSWHERES.CITY='北京'使用系统存储过程sp_helptext查看jsearch,jmsearch的文本信息。(5分)EXECsp_helptextjsearchEXECsp_helptextjmsearch因为刚才已经加密,所以无法看见执行jmsearch存储过程,查看北京供应商的情况。(5分)EXECjmsearch删除jmsearch存储过程。(5分)DROPPROCEDURE[dbo].[jmsearch]针对Student数据库,创建和执行如下的触发器:(共计40分)删除SC表上的外键约束,针对SC表创建一个名为insert_s的INSERT触发器。该触发器的功能:当用户向SC表中插入记录时,如果插入的cno值不是C表中Cno的已有值,则提示用户“不能插入记录这样的纪录”,否则提示“记录插入成功”。触发器创建成功之后,向SC表插入记录,验证触发器是否正常工作。(5分)createtriggerinsert_sonSCforinsertasdeclare@cnoointselect@cnoofrominsertedif(notexists(select*fromCwhereC.cno=@cnoo))beginprint'不能插入记录这样的纪录'endelseprint'记录插入成功'insertintoSCvalues('95002','7','100')为S表创建一个名为dele_s1的DELETE触发器,该触发器的作用是禁止删除S表中的记录。触发器创建成功之后,删除S表中的记录,验证触发器是否正常工作。(5分)CREATEtriggerdele_s1ONSinsteadofdeleteasprint'不能删除S表中记录'deletefromSwhereS.sno='95002'为S表创建一个名为dele_s2的DELETE触发器,该触发器的作用是删除S表中的记录时删除SC表中该学生的选课纪录。触发器创建成功之后,删除S表中的记录删除S表中的记录,验证触发器是否正常工作(SC表中的数据被正常删除)。(5分)createtriggerdele_s2onSfordeleteasdelete fromSC whereSC.snoin(selectsnofromdeleted)deletefromswheres.sno='95001'当再次查询SC表时可见95001已经别删除了为S表创建一个名为update_s的UPDATE触发器,该触发器的作用是禁止更新S表中“sdept”字段的内容。触发器创建成功之后,更新S表中“sdept”字段的内容,验证触发器是否正常工作。(5分)createtriggerupdate_sonSforupdateasifupdate(sdept)beginprint'禁止更新sdept字段'rollbacktranendupdateSsetsdept='MA'wheresno='95002'禁用update_s触发器。禁用之后,更新S表中的“sdept”字段的内容,验证触发器是否还继续正常工作。(5分)altertableSdisabletriggerupdate_supdateSsetsdept='MA'wheresno='95002'删除update_s触发器。(5分)droptriggerupdate_s创建一个新的课程成绩统计表CAvgGrade(Cno,Snum,examSNum,avgGrade),分别表示课号,选该课程的学生人数,参加考试人数,该门课程的平均成绩。利用触发器实现如下的功能:当SC表中有记录插入、删除或者更新时,自动更新表CAvgGrade。注意SC表中的grade为NULL时表明该学生还未参加考试,计算平均成绩时不需要计算该成绩,但是grade为0即考试成绩为0时,需要计算该成绩。(10分)createtableCAvgGrade(Cnochar(10),Snumchar(10),examSNumchar(10),avgGradechar(4));初始化Cavggrade表:创建触发器实现功能:创建一个works数据库,其中包含员工表empoyee(eID,eName,salary),假设该表中有1000条员工数据,完成下列要求(总计20分,每题10分)。为了协助本题自动生成1000条员工数据,创建一个自动生成员工ID的用户自定义函数generateEID。其中员工ID要求是一个8位的数字,前四位表示插入员工数据的当前年份,后四位按照从0001到9999的顺序增长。例如2015年插入的第一条数据是20050001,所有1000条员工ID分别是20150001-20151000。调用该函数实现自动插入1000条数据。(注意插入数据的时候员工姓名可以为任意值,工资是2000-5000之间的数字)createFUNCTIONgenerateEID(@emp_numint,@yearint)RETURNS@empTable(eIDintprimarykey,eNamechar(20),salaryint)ASBEGINdeclare@iintdeclare@final_idintdeclare@salaryintdeclare@namechar(20)set@i=1;set@year=@year*10000;while@i<=@emp_numbeginset@final_id=@year+@iset@name='empoyee'+cast(@iasvarchar)set@salary=2000+@i%6*500insertinto@empvalues(@final_id,@name,@salary)set@i=@i+1endreturnEND使用该自定义函数的返回值创建一个empoyee的表;CREATE
TABLE
empoyee(eID
int
primary
key,eName
char(20),salary
int)insert
into
empoyee
select
*
from
dbo.generateEID(1000,2015)函数运行之后,empoyee表的数据变成了:该公司计划为员工按照一定的规则涨工资,请使用游标创建一个存储过程,执行该存储过程完成本次工资调整:工资增长规则如下:工资在3000元以下,每月涨300元;工资在3000-4000元之间,每月涨200元;工资大于或者等于4000元,每月涨50元;createprocedureupsalaryasdeclare@eidnchar(10)declare@salaryintdeclaremycursorcursorforselecteidfromemployeeopenmycursorfetchnextfrommycursorinto@eidwhile(@@FETCH_STATUS=0)beginselect@salary=salaryfromemployeewhereeid=@eidif(@salary<3000)beginupdateemployeesetsalary=@salary+300whereeid=@eidendif(@salary>=3000and@salary<4000)beginupdateemployeesetsalary=@salary+200whereeid=@eidendif(@salary>=4000)beginupdateemployeesetsalary=@salary+50whereeid=@eidendfetchnextfrommycursorinto@eidendclosemycursor二、实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)除了标题内容以外,该部分内容中还可以写对于实验的一些感受,建议,意见等。3.自己的感受数据库实验还是比较难做的实验,信息量和任务量都很大,在做这次实验之前,我开始看了一下实验的题目,对应着题目,我看了一遍课本,发现仅从课本上的知识是不能全部的做完这次实验,然后我通过查阅参考书,去做预习报告,我发现这次的题目相比于前几次是比较有挑战性的。比如说对于游标的使用、创建游标、执行带游标的存储过程等等,我在真正敲代码时,都遇到了相应的困难,带式通过咨询老师,查阅资料最终都得到了相应的解决。
批阅者:批阅日期:实验成绩:批注:《数据库原理》实验报告实验名称学号姓名班级日期六ODBC/JDBC数据库编程2013302536张林江100113032015-10-31实验六:ODBC/JDBC数据库编程1、实验目的熟练掌握ODBC数据源的配置方法。掌握ODBC编程技术。掌握JDBC编程技术。(选做实验)2、实验内容ODBC配置以及程序调试:(50分)配置一个ODBC数据源,要求数据源名称:student,其中包含s(学生信息)表。1.点击开始菜单.-->2打开<控制面板>.-3在<调整计算机的设置>中,点击<系统和安全>.--4.点击<管理工具>.--5点击<数据源(ODBC)>.阅读并运行实验给出的例子程序,理解ODBC编程,要求简单写出自己对这段程序的理解或者流程图,并且请给出程序运行结果示例图。程序基本思想:利用ODBC连接数据库Student进行查询。点击运行按钮,调CODBC_TESTDlg::OnButtonExcute()函数。二、实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)除了标题内容以外,该部分内容中还可以写对于实验的一些感受,建议,意见等。3.自己的感受了解了ODBC的编程奥妙,触发器定义对相应数据库带来的便利等等。通过这次实验,我了解到的学习数据库给我带来的乐趣和编程实现的小小成就感,我感觉
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一村一法官工作制度
- 保荐人内核工作制度
- 乡镇经发办工作制度
- 人大代书室工作制度
- 加油站消防工作制度
- 匈牙利防疫工作制度
- 医保追溯码工作制度
- 医护办工作制度汇编
- 医院传染病工作制度
- 医院联系点工作制度
- (正式版)JBT 14581-2024 阀门用弹簧蓄能密封圈
- DB23-T 3625.2-2023 金属非金属矿山双重预防机制建设评定指南 第2部分:地下矿山
- 人民调解委员会开庭调解笔录
- (完整word版)身份证号码前6位表示的地区对照表
- 金属与石材幕墙工程技术规范-JGJ133-2013含条文说
- 初中生物各章节概念知识框架图
- 空调维保质量保障体系及措施方案
- 城市轨道交通工程监测技术规范讲解课件
- 旅游学第四版李天元课后习题答案
- 花篮拉杆式悬挑盘扣脚手架施工工法
- 民航概论各章习题详解答案分解
评论
0/150
提交评论