西工大第四次数据库实验报告_第1页
西工大第四次数据库实验报告_第2页
西工大第四次数据库实验报告_第3页
西工大第四次数据库实验报告_第4页
西工大第四次数据库实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库系统概论实验报告题目:实验四 存储过程/触发器/ODBC数据库编程姓名 班级学号 日期刘凯1003120120123026062014.111、 实验内容、步骤以及结果1. 使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。sp_rename 'V_SPJ','V_SPJ_三建'2. 存储过程的创建与使用:(1) 使用SPJ数据库中的S表、P表、J表、SPJ表,创建一个带参数的存储过程jsearch。该存储过程的作用是:当任意输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的

2、名称(PNAME)以及工程的名称(JNAME)。执行jsearch存储过程,查询“J1”对应的信息。CREATE PROCEDURE jsearch(SPJ_JNO CHAR(10)AS BEGIN SELECT SNAME,PNAME,JNAME FROM SPJ,S,P,JWHERE SPJ_JNO=SPJ.JNO AND SPJ.JNO=J.JNO AND SPJ.PNO=P.PNO AND SPJ.SNO=S.SNO END;(2) 创建一个带有输出游标参数的存储过程jsearch2,功能同1),执行jsearch2,查询“J1”对应信息,并且将得到的结果用print语句输出到控制台。

3、CREATE PROCEDURE jsearch2(SPJ_JNO CHAR(10),SPJ_CURSOR CURSOR VARYING OUTPUT) AS SET SPJ_CURSOR = CURSORFORSELECT S.SNAME,P.PNAME,J.JNAME FROM SPJ,S,P,JWHERE SPJ_JNO=SPJ.JNO AND SPJ.JNO=J.JNO AND SPJ.PNO=P.PNO AND SPJ.SNO=S.SNOOPEN SPJ_cursorjsearch 'J1'(3) 使用SPJ数据库中的S表,为其创建一个加密的存储过程jmsearch。

4、该存储过程的作用是:当执行该存储过程时,将返回北京供应商的所有信息。CREATE PROCEDURE jmsearchWITH ENCRYPTIONAS BEGIN SELECT S.SNAME,S.SNO,S.STATUS FROM SWHERE S.CITY='北京' END;BEGIN DECLARE SNAME char(10) DECLARE PNAME char(10) DECLARE JNAME char(10) DECLARE SPJ_cursor CURSOR EXEC jsearch2 'J1',SPJ_cursor OUTPUT FETCH

5、 NEXT FROM SPJ_cursor INTO SNAME,PNAME,JNAME WHILE (FETCH_STATUS = 0) BEGIN PRINT(SNAME+PNAME+JNAME) FETCH NEXT FROM SPJ_cursor INTO SNAME,PNAME,JNAME END CLOSE SPJ_cursor DEALLOCATE SPJ_cursor ENDGO(4) 使用系统存储过程sp_helptext查看存储过程jsearch, jmsearch的文本信息。exec sp_helptext jsearchEXEC sp_helptext jmsearch

6、(5) 执行jmsearch存储过程,查看北京供应商的情况。EXEC jmsearch(6) 删除jmsearch存储过程。 DROP procedure jmsearch 3. 触发器的创建与使用:(1) 在student数据库中建立一个名为insert_s的INSERT触发器,存储在S表中。该触发器的作用是:当用户向S表中插入记录时,如果插入的sdept值为CS ,IS ,MA以外的值,则提示用户“不能插入记录这样的纪录”,否则提示“记录插入成功”。触发器创建成功之后,向S表插入记录,验证触发器是否正常工作。USE StudentGOCREATE TRIGGER insert_sON SF

7、OR INSERT AS IF (SELECT Sdept FROM INSERTED)IN ('CS','IS','MA')BEGINPRINT'记录数据成功'ENDELSE PRINT'不能插入记录这样的数据'USE StudentGOINSERT INTO S VALUES ('2012302607','葛兴','男','1993/01/01','IS')(2) 为student数据库中的S表创建一个名为dele_s1的DELET

8、E触发器,该触发器的作用是禁止删除S表中的记录。触发器创建成功之后,删除S表中的记录,验证触发器是否正常工作。USE StudentGOCREATE TRIGGER dele_s1ON SINSTEAD OF DELETEAS PRINT'不能删除'USE StudentGODELETE FROM S WHERE S.sno='2012302607'SELECT * FROM SDROP TRIGGER dele_s1;(3) 为student数据库中的S表创建一个名为dele_s2的DELETE触发器,该触发器的作用是删除S表中的记录时删除SC表中该学生的选课

9、纪录。触发器创建成功之后,删除S表中的记录删除S表中的记录,验证触发器是否正常工作(SC表中的数据被正常删除)。USE StudentGOCREATE TRIGGER dele_s2ON SFOR DELETEAS DELETE FROM SC WHERE SC.sno IN(SELECT sno FROM DELETED)DELETE FROM S WHERE S.sno='95001'SELECT * FROM SC(4) 为student数据库中的S表创建一个名为update_s的UPDATE触发器,该触发器的作用是禁止更新S表中“sdept”字段的内容。触发器创建成功之

10、后,更新S表中“sdept”字段的内容,验证触发器是否正常工作。USE StudentGOCREATE TRIGGER update_sON SINSTEAD OF UPDATE AS PRINT'不能更新'USE StudentGOUPDATE S SET Sdept='MA' WHERE S.sno='2012302607'(5) 禁用update_s触发器。禁用之后,更新S表中的“sdept”字段的内容,验证触发器是否还继续正常工作。USE StudentGOALTER TABLE S DISABLE TRIGGER update_sUSE

11、 StudentGOUPDATE S SET Sdept='MA' WHERE S.sno='2012302607'(6) 删除update_s触发器。USE StudentGODROP TRIGGER update_s4. ODBC配置以及程序调试:(1) 配置一个ODBC数据源,要求数据源名称:student,其中包含s(学生信息)表。(2) 阅读并运行实验给出的程序,理解ODBC编程,要求简单写出自己对这段程序的理解或者流程图,并且请给出程序运行结果示例图。二、实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)本次试验进行了触发器、存储过程以及数据库等应用技

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论