存储过程
存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。
使用
-- 创建存储过程
DELIMITER $ --声明存储过程的结束符
CREATE PROCEDURE stu_test() --存储过程名称(参数列表)
BEGIN --开始
-- 可以写多个sql语句 -- sql语句+流程控制
END $ --结束 结束符
-- 执行存储过程
call stu_test() --call 存储过程名称(参数)
参数:
IN: 表示输入参数,可以携带数据带存储过程中
OUT: 表示输出参数,可以从存储过程中返回结果
INOUT: 表示输入输出参数,两者结合
参数案例
-- 存储过程
-- 1、需求:传入一个学生ID,查询该学生的信息
-- 带有输入参数的存储过程
delimiter $
create PROCEDURE stu_findByid(in sid int)
begin
select * from student where id=sid;
END $
-- 调用存储过程
call stu_findByid(1);
-- 2、带有输出参数的存储过程
delimiter $
create procedure stu_out(out str varchar(20))
begin
-- 给参数赋值
set str='这是一个输出参数';
end $
-- 删除存储过程
drop procedure stu_inout;
-- 调用存储过程
-- 1)定义了一个变量
-- 2)定义了一个会话变量接收存储过程输出的参数
call stu_out(@name);
select @name;
-- 3、输入输出参数的存储过程
delimiter $
create procedure stu_inout(inout n int)
begin
select n;
set n=500;
end $
set @n=10;
call stu_inout(@n);
select @n;
触发器
触发器是一种专用类型的存储过程,它被捆绑到SQL Server 的表格或者视图上
使用
delimiter $
create trigger `ffs` -- 触发器名
after -- 设置什么时候执行
insert on -- 插入数据后执行
`focusroutes` -- 为哪个表添加触发器
for each row
begin
delete from focusroutes
end $
navicat中创建
在设计表结构中
点击sql预览