数据库开发

(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);
查看结果:
selct @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 EmployeelD=ID1;
SELECT InCome-OutCome INTO SR2 FROM Salary WHERE EmployeeID=ID2;
IF ID1>ID2 THEN
SET BJ=0;
ELSE
SET BJ=1;
END IF;
END$$
DELIMITER;
调用该存储过程:
CALL COMPA(‘000001', '108991',@BJ);
查看结果:
select @BJ;
(1)创建触发器,在Employees表中删除员工信息的同时将Salary 表中该员工的信息删除,以确
保数据完整性。
DELIMITER $$

CREATE
    TRIGGER `aaa`.`DELETE_EM` AFTER DELETE
    ON `aaa`.`employees`
    FOR EACH ROW BEGIN
DELETE FROM `salary`
WHERE `employeeid`=old.`employeeid`;
    END$$

DELIMITER ;
(2)假设Departments2表和Departments表的结构和内容都相同,在Departments上创建一个触发
器,如果添加一个新的部门,该部门也会添加到Departments2表中。
DELIMITER $$
CREATE TRIGGER Departments Ins
AFTER INSERT ON Departments FOR EACH ROW
BEGIN
INSERT INTO Departments2 VALUES(NEW.DepartmentID, NEW.Department Name,NEW.Note);
END$$
DELIMITER;
(3)当修改Employees表时,若将Employes表中员工的工作时间增加1年,则将收入增加500
元,若工作时间增加2年则收入增加1000元,依次增加。若工作时间减少则无变化。
DELIMITER $$
CREATE TRIGGER ADD SALARY
AFTER UPDATE ON Employees FOR EACH ROW
BEGIN
DECLARE YEARS INTEGER;
SET YEARS= NEW.WorkYear-OLD.WorkYear;
IF YEARS>0 THEN
UPDATE Salary SET InCome=InCome+500*YEARS
WHERE EmployeeID =NEW.EmployeeID;
END IF;
END$$
DELIMITER;
a.创建UPDATE触发器,当Departments表中部门号发生变化时,Employees表中员工所属的部门号也将改变。
DELIMITER $$

CREATE
  
    TRIGGER `aaa`.`xm` AFTER UPDATE
    ON `aaa`.`departments`
    FOR EACH ROW BEGIN
UPDATE  `employees`   
    SET `departmentid`=new.`departmentid`
    WHERE `departmentid`=old.`departmentid`
 END$$
DELIMITER ;
a.创建UPDATE触发器,当Salary 表中的InCome值增加500时,OutCome值也增加500
DELIMITER $$

CREATE
   
    TRIGGER `aaa`.`dd` BEFORE UPDATE
    ON `aaa`.`salary`
    FOR EACH ROW BEGIN
DECLARE n INT;
DECLARE s FLOAT;
SET s=new.`income`-old.`income`;
SET n=s/500;
IF  n>=1 THEN 
SET new.`outcome`=old.`outcome`+500;
END IF;
    END$$

DELIMITER ;
创建hpxxbcp存储过程,完成hpxxb的增、删、改操作
DELIMITER $$

 CREATE ` PROCEDURE `hpxxbcp`(
`hpid` INT,
`hpmc` VARCHAR(50),
`hptm` VARCHAR(50),
`jldw` VARCHAR(50),
`hpzt`  TINYINT,
`dj` DECIMAL(18,3),
`cxj`  DECIMAL(18,3)  
    )
BEGIN
    /*增加货品*/
IF hpid=0 THEN 
INSERT INTO `tb_hpxxb`(`hpmc`,`hptm`,`jldw`,`dj`,`cxj`,`mcsx`)
VALUES(`hpmc`,`hptm`,`jldw`,`dj`,`cxj`,pysxcx(hpmc));
SET @hpid=@@identity;
INSERT INTO  `tb_hpkcb`(`hpid`,`kcsl`,`zrkc`,`yckc`)
VALUES(@hpid,0,0,0);
/*修改*/
ELSEIF hpid>0 THEN
UPDATE `tb_hpxxb` SET
`tb_hpxxb`.`hpmc`=hpmc,
`tb_hpxxb`.`hptm`=hptm,
`tb_hpxxb`.`jldw`=jldw,
`tb_hpxxb`.`hpzt`=hpzt,
`tb_hpxxb`.`dj`=dj,
`tb_hpxxb`.`cxj`=cxj,
`tb_hpxxb`.`mcsx`=pysxcx(hpmc)
WHERE `tb_hpxxb`.`hpid`=hpid;
ELSE 
DELETE FROM `tb_hpkcb` WHERE `tb_hpkcb`.`hpid`=-hpid;
DELETE FROM `tb_hpxxb` WHERE `tb_hpxxb`.`hpid`=-hpid;
END IF;
    END */$$
DELIMITER ;
创建hpxxbcx存储过程,完成hpxxb的查询操作
DELIMITER $$

CREATE
    PROCEDURE `csgw`.`hpxxcx`(hpid INT)
   
    BEGIN
/*查询全部货品*/
IF hpid=0 THEN
SELECT * FROM tb_hpxxb;
ELSE
/*根据hpid查询货品信息*/
SELECT * FROM tb_hpxxb WHERE tb_hpxxb.hpid=hpid;
END IF;
    END$$

DELIMITER ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值