MySQL实验(三) 过程式数据库对象的使用

本文通过实验详细介绍了MySQL中存储过程、存储函数、触发器和事件的创建与应用。实验内容包括:利用Employees表进行存储过程的创建与调用,如计算员工人数、比较收入;创建存储函数,例如返回员工总数、删除多余员工号;触发器的实现,如数据完整性保障、部门信息同步;以及事件的设置,如定时查询员工信息。通过这些实践,加深了对MySQL数据库对象的理解和操作能力。
摘要由CSDN通过智能技术生成

一、目的与要求

(1)掌握存储过程创建和调用的方法;
(2)掌握MySQL中程序片段的组成;
(3)掌握游标的使用方法;
(4)掌握存储函数创建和调用的方法;
(5)掌握触发器的使用方法;
(6)掌握事件的创建和使用方法;

二、实验内容

(1)了解存储过程体中允许的SQL语句类型和参数的定义方法;
(2)了解存储过程的调用方法;
(3)了解存储函数的定义和调用方法;
(4)了解触发器的作用和调用方法;
(5)了解事件的作用和定义方法;

三、实验结果

1.存储过程
(1)创建存储过程,使用Employees表中的员工人数来初始化一个局部变量,并调用这个存储过程。

USE YGGL
DELIMITER $$
CREATE PROCEDURE TEST(OUT NUMBER1 INTEGER)
BEGIN
	DECLARE NUMBER2 INTEGER;
	SET NUMBER2=(SELECT COUNT(*) FROM Employees);
	SET NUMBER1=NUMBER2;
END $$
DELIMITER;

这里写图片描述

CALL TEST(@NUMBER);
select @NUMBER;

这里写图片描述
(2)创建存储过程,比较两个员工的实际收入,若前者比后者高就输出0,否则输出1.

DELIMITER $$
CREATE PROCEDURE
	COMPA(IN ID1 CHAR(6),IN ID2 CHAR(6),OUT BJ INTEGER)
BEGIN 
	DECLARE SR1,SR2 FLOAT(8);
	SELECT InCome-OuTCome INTO SR1 FROM Salary WHERE EmployeesID=ID1;
	SELECT InCome-OuTCome INTO SR2 FROM Salary WHERE EmployeesID=ID2;
	IF ID1>ID2 THEN
		SET BJ=0;
	ELSE 
		SET BJ=1;
	END IF;
END$$
DELIMITER;

这里写图片描述

CALL COMPA('000001','108991',@BJ);
SELECT @BJ;

这里写图片描述
(3)创建存储过程,使用游标确定一个员工的实际收入是否排在前三名。结果为TRUE表示是,结果为FLASE表示否;

DELIMITER $$
CREATE PROCEDURE
TOP_THREE (IN EM_ID CHAR(6),OUT OK BOOLEAN)
BEGIN 
	DECLARE X_EM_ID CHAR(6);
	DECLARE ACT_IN,SEQ INTEGER;
	DECLARE FOUND BOOLEAN;
	DECLARE SALARY_DIS CURSOR FOR
	SELECT EmployeesID,InCome-OutCome
	FROM Salary 
	ORDER BY 2 DESC;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET FOUND=FALSE;
SET SEQ=0;
SET FOUND=TRUE;
SET OK=FALSE;
OPEN SALARY_DIS;
FETCH SALARY_DIS INTO X_EM_ID,ACT_IN;
WHILE FOUND AND SWQ<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值