西工大第四次数据库实验报告

上传人:小** 文档编号:58861460 上传时间:2018-11-02 格式:DOC 页数:11 大小:3MB
返回 下载 相关 举报
西工大第四次数据库实验报告_第1页
第1页 / 共11页
西工大第四次数据库实验报告_第2页
第2页 / 共11页
西工大第四次数据库实验报告_第3页
第3页 / 共11页
西工大第四次数据库实验报告_第4页
第4页 / 共11页
西工大第四次数据库实验报告_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《西工大第四次数据库实验报告》由会员分享,可在线阅读,更多相关《西工大第四次数据库实验报告(11页珍藏版)》请在金锄头文库上搜索。

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

2、ME)和零件的名称(PNAME)以及工程的名称 (JNAME)。执行 jsearch 存储过程,查询“J1”对应的信息。CREATE PROCEDURE jsearch(SPJ_JNO CHAR(10) AS BEGIN SELECT SNAME,PNAME,JNAME FROM SPJ,S,P,J WHERE 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”对应信息,并且将得到的结果

3、用 print 语句输出到控制台。CREATE PROCEDURE jsearch2(SPJ_JNO CHAR(10),SPJ_CURSOR CURSOR VARYING OUTPUT) AS SET SPJ_CURSOR = CURSOR FOR SELECT S.SNAME,P.PNAME,J.JNAME FROM SPJ,S,P,J WHERE SPJ_JNO=SPJ.JNO AND SPJ.JNO=J.JNO AND SPJ.PNO=P.PNO AND SPJ.SNO=S.SNO OPEN SPJ_cursorjsearch J1(3) 使用 SPJ 数据库中的 S 表,为其创建一个加

4、密的存储过程jmsearch。该存储 过程的作用是:当执行该存储过程时,将返回北京供应商的所有信息。CREATE PROCEDURE jmsearch WITH ENCRYPTION AS BEGIN SELECT S.SNAME,S.SNO,S.STATUS FROM SWHERE S.CITY=北京 END; BEGINDECLARE SNAME char(10)DECLARE PNAME char(10)DECLARE JNAME char(10)DECLARE SPJ_cursor CURSOREXEC jsearch2 J1,SPJ_cursor OUTPUTFETCH NEXT F

5、ROM SPJ_cursor INTO SNAME,PNAME,JNAMEWHILE (FETCH_STATUS = 0) BEGINPRINT(SNAME+PNAME+JNAME) FETCH NEXT FROM SPJ_cursor INTO SNAME,PNAME,JNAMEENDCLOSE SPJ_cursorDEALLOCATE SPJ_cursor END GO(4) 使用系统存储过程 sp_helptext 查看存储过程 jsearch, jmsearch 的文本信息。exec sp_helptext jsearch EXEC sp_helptext jmsearch(5) 执行

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

7、R insert_s ON S FOR INSERT AS IF (SELECT Sdept FROM INSERTED)IN (CS,IS,MA) BEGIN PRINT记录数据成功ENDELSE PRINT不能插入记录这样的数据USE Student GO INSERT INTO S VALUES (2012302607,葛兴,男,1993/01/01,IS)(2) 为 student 数据库中的 S 表创建一个名为 dele_s1 的 DELETE 触发器,该触发 器的作用是禁止删除 S 表中的记录。触发器创建成功之后,删除 S 表中的记 录,验证触发器是否正常工作。USE Studen

8、t GO CREATE TRIGGER dele_s1 ON S INSTEAD OF DELETE AS PRINT不能删除USE Student GO DELETE FROM S WHERE S.sno=2012302607 SELECT * FROM S DROP TRIGGER dele_s1;(3) 为 student 数据库中的 S 表创建一个名为 dele_s2 的 DELETE 触发器,该触发 器的作用是删除 S 表中的记录时删除 SC 表中该学生的选课纪录。触发器创建 成功之后,删除 S 表中的记录删除 S 表中的记录,验证触发器是否正常工作 (SC 表中的数据被正常删除)。

9、USE Student GO CREATE TRIGGER dele_s2 ON S FOR DELETE AS 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”字段的内容。触发器创建成功之后,更 新 S 表中“sdept”字段的内容,验证触发器是否正常工作。USE Student G

10、O CREATE TRIGGER update_s ON S INSTEAD OF UPDATE AS PRINT不能更新USE Student GO UPDATE S SET Sdept=MA WHERE S.sno=2012302607(5) 禁用 update_s 触发器。禁用之后,更新 S 表中的“sdept”字段的内容,验证 触发器是否还继续正常工作。USE Student GO ALTER TABLE S DISABLE TRIGGER update_s USE Student GO UPDATE S SET Sdept=MA WHERE S.sno=2012302607(6)删除

11、 update_s 触发器。 USE Student GO DROP TRIGGER update_s4.ODBC 配置以及程序调试: (1) 配置一个 ODBC 数据源,要求数据源名称:student,其中包含 s(学生信息)表。(2) 阅读并运行实验给出的程序,理解 ODBC 编程,要求简单写出自己对这段程序 的理解或者流程图,并且请给出程序运行结果示例图。 二、实验中出现的问题以及解决方案(对于未解决问题请将问题列出来) 本次试验进行了触发器、存储过程以及数据库等应用技术进行了实验,本次试验相 对前几次来说比较困难,对于第一次做这些实验,刚开始实在不知道该怎么写程序,而 且很多 sql 语句经常是改了又改,不是很熟练,不过做到最后,还是略知一二,后面的 实验内容也就相对简单了一些,找到了一些方法,本次试验遇到了一些问题,后来经过和同学的相互商讨,最终解决,这为大作业奠定了一定的基础。批阅者:批阅者: 批阅日期:批阅日期: 实验成绩:实验成绩: 批注:批注:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号