一.存储函数
根据员工编号查询名称
delimiter //;
create function sel_name(eno int)
returns varchar(20) -- 返回值类型
deterministic -- 确定的
begin
declare v_name varchar(20) -- 定义变量
select ename into v_name from mktest.emp where empno=eno;
return v_name; -- 返回该变量
end //;
-- 调用
select sel_name(7788);
函数与存储过程的区别:
1.关键字不同
2.过程:In,OUT与INOUT三种模式显示输入和输出,函数返回值实现输出
3.过程独立单元使用,函数作为语句的一部分使用
二.触发器
在执行删除操作前把需要删除的记录插入到另外的表中。应用场景:当网站客户注销账号时,为了不损失客户信息(客户信息可是很重要的),又不影响查询性能,常常在删除前把数据插入到新表中。
delimiter //;
create trigger tri_del
before delete
on stu for each row -- 行级触发器
begin #old new
insert into stu2 values(old.sid,old.username,old.age);
end //;
delete from stu where sid = 20;
执行一组SQL,由事件(insert/update/delte)驱动,不支持传参。