




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学校代码: 10128学 号: 201220905048 数据库原理及应用实验报告(题 目:存储过程和触发器的使用 学生姓名:孙跃学 院:理学院系 别:数学系专 业:信息与计算科学班 级:信计12-2任课教师:侯睿 二 一 五 年 五 月91、 实验目的1.掌握存储过程的使用方法;2.掌握触发器的使用方法。2、 实验内容1.存储过程;2.触发器。3、 实验程序及结果1、存储过程(1)创建存储过程,使用Employees表中的员工人数来初始化一个局部变量,并调用这个存储过程。USE YGGLGOCREATE PROCEDURE TEST NUMBER1 int OUTPUT AS BEGIN DECLARE NUMBER2 int SET NUMBER2=(SELECT COUNT(*)FROM Employees) SET NUMBER1=NUMBER2ENDGOUSE YGGLGODECLARE num intEXEC TEST num OUTPUTSELECT num(2)创建存储过程,比较两个员工的实际收入,若前者比后者高就输出0,否则输出1。USE YGGLGOCREATE PROCEDURE COMPA ID1 CHAR(6),ID2 CHAR(6),BJ INT OUTPUT AS BEGIN DECLARE SR1 FLOAT,SR2 FLOAT SELECT SR1=InCome-OutCome FROM Salary WHERE EmployeeID=ID1 SELECT SR2=InCome-OutCome FROM Salary WHERE EmployeeID=ID2 IF ID1ID2 SET BJ=0 ELSE SET BJ=1 ENDUSE YGGLGODECLARE BJ int EXEC COMPA 000001,108991,BJ OUTPUT SELECT BJ (3)创建添加职员记录的存储过程EmployeeADD。USE YGGL GO CREATE PROCEDURE EmployeeAdd ( employeeid char(6),name char(10),education char(4),birthday datetime, woekyear tinyint, sex bit,address char(40),phonenumber char(12), departmentID char(3) ) AS BEGIN INSERT INTO Employees VALUES(employeeid,name,education,birthday,woekyear, sex,address,phonenumber,departmentID) END RETURN GOUSE YGGLGOEXEC EmployeeAdd 990230,刘朝,本科,840909,2,1,武汉小洪山号,85465213,3(4)创建一个带有OUTPUT游标参数的存储过程,在Employees表中声明并打开一个游标。USE YGGL GO CREATE PROCEDURE em_cursor em_cursor cursor VARYING OUTPUT AS BEGIN SET em_cursor=CURSOR FORWARD_ONLY STATIC FOR SELECT*FROM Employees OPEN em_cursor END GO声明一个局部游标变量,执行上述存储过程,并将游标赋值给局部游标变量,然后通过该游标变量读取记录:USE YGGLGODECLARE MYCURSOR CURSOR EXEC em_cursor em_cursor=MyCursor OUTPUT FETCH NEXT FROM MyCursor WHILE (FETCH_STATUS=0) BEGIN FETCH NEXT FROM MyCursor END CLOSE MyCursor DEALLOCATE MyCursor GO(5)创建一个存储过程,使用游标确定一个员工的实际收入是否排在前三名。结果为1表示是,结果为0表示否。USE YGGLGOCREATE PROCEDURE TOP_THREE EM_ID char(6),OK bit OUTPUT AS BEGIN DECLARE X_EM_ID char(6) DECLARE ACT_IN int,SEQ int DECLARE SALARY_DIS cursor FOR SELECT EmployeeID,InCome-OutCome FROM Salary ORDER BY InCome-OutCome DESC SET SEQ=0 SET OK=0 OPEN SALARY_DIS FETCH SALARY_DIS INTO X_EM_ID,ACT_IN WHILE SEQ3 AND OK=0 BEGIN SET SEQ=SEQ+1 IF X_EM_ID=EM_ID SET OK=1 FETCH SALARY_DIS INTO X_EM_ID,ACT_IN END CLOSE SALARY_DIS DEALLOCATE SALARY_DIS END执行该存储过程,并查看结果:USE YGGLGODECLARE OK bitEXEC TOP_THREE 108991,OK OUTPUT SELECT OK 2、触发器(1) 向Employees表插入或修改一个记录时,通过触发器检查记录的DepartmentID值在Department表中是否存在,若不存在,则取消插入或修改操作。USE YGGL GO CREATE TRIGGER EmployeesIns ON dbo.Employees FOR INSERT,UPDATE AS BEGIN IF(SELECT DepartmentID from inserted) NOT IN (SELECT DepartmentID FROM Department) ROLLBACK END向Employees表插入或修改一行记录,查看结果 (2) 修改Department表“DpartmentID”字段值时,该字段在Employees表中对应的值也做相应修改。USE YGGL GO CREATE TRIGGER DepartmentUpdate ON dbo.Department FOR UPDATE AS BEGIN UPDATE Employees SET DepartmentID=(SELECT DepartmentID FROM insered) WHERE DepartmentID=(SELECT DepartmentID FROM deleted) END GO(3) 删除Department表中记录的同时删除该记录“DepartmentID”字段值在Employees表中对应的记录。USE YGGLGOCREATE TRIGGER DepartmentsDelate ON dbo.Department FOR DELETE AS BEGIN DELETE FROM Employees WHERE DepartmentID=(SELECT DepartmentID FROM deleted) END GO(4) 创建INSTEAD OF 触发器,当向Salary表中插入记录时,先检查EmployeeID列上的值在Employees中是否存在,如果在则执行插入操作,如果不存在,则提示“员工号不存在”。USE YGGLGOCREATE TRIGGER EM_EXISTS ON Salary INSTEAD OF INSERT AS BEGIN DECLARE EmployeeID char(6) SELECT EmployeeID=EmployeeID FROM inserted IF(EmployeeID IN(SELECT EmployeeID FROM Employees) INSERT INTO Salary SELECT*FROM inserted ELSE PRINT员工号不存在 END向Salary表中插入一行记录查看效果:USE YGGLGOINSERT INTO Salary VALUES(111111,2500.3,123.2)(5) 创建DDL触发器,当删除YGGL数据库的一个表时,提示“不能删除表”,并回滚删除表的操作。USE YGGL GO CREATE TRIGGER table_delete ON DATABAS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省汕头市潮阳一中明光学校2025-2026学年高三上学期9月月考数学试题含答案
- 安全IDE标准制定-洞察及研究
- 食品溯源平台优化-洞察及研究
- 赛事数据实时分析与可视化呈现技术-洞察及研究
- 基于拓扑优化的凹片形端头结构在有限空间内的散热效能提升方案
- 基于AI算法的减速阀故障预测与自愈控制架构创新
- 地理空间制图与智慧城市BIM系统对接的语义鸿沟修复策略
- 国际标准差异导致的出口设备适应性改造技术路径
- 可降解材料在低温环境下的性能稳定性研究
- 反射型陶瓷金卤灯在植物补光应用中的光质调控与生物效应关联性研究
- 洪恩识字识字卡(001-100)可直接打印剪裁
- 小学科学-《固体液体和气体》教学课件设计
- 23J916-1:住宅排气道(一)
- 岗位任职资格要求表
- 麻醉学科建设与管理
- 底流式消能池水力计算
- 矿山越界采矿调查报告样板(19.05)
- 信息技术学习评价表
- 智能会议系统施工方案及方法
- 成都某市政道路竣工总结及工程质量自评报告
- 雾都孤儿读书笔记3000字(三篇)
评论
0/150
提交评论