delimiter $
create procedure pro_testByInOut(INOUT n VARCHAR(10))
begin
select n;
set n='500';
end $
-- 创建会话变量
set @n='10';
-- 调用存储过程
Call pro_testByInOut(@n);
-- 查看
select @n;
带有判断条件的存储过程
delimiter $
create procedure pro_testByIf(In num int,out str varchar(20))
begin
if num=1 then
set str='monday';
elseif num=2 then
set str='wendesday';
elseif num=3 then
set str='星期三';
else
set str='错误参数';
end if;
end $
Call pro_testByIf(4,@n);
SELECT @n;
带有循环条件的存储过程
delimiter $
create procedure pro_testByWhile(In num int, out vsum int)
begin
-- 声明局部变量
declare i int default 1;
declare asum int defalt 0;
while i<num do
set asum=asum+i;
set i=i+1;
end while;
set vsum=asum;
end$
Call pro_testByWhile(200,@vsum);
select @vsum;
接收表中的数据的存储过程
delimiter $
create procedure pro_findById2(IN eid INT,OUT aname varchar(20))
begin
select name into aname from employee where id =eid;
end$
call pro_findById2(3,@aname);
select @aname;
触发器
插入的表的与触发的表要不同
create trigger test_insert
after insert on employee
for each row
insert into body(contendt)values('往员工插入了一条数据');
删除数据触发
create trigger test_delete
after delete on student
for each row
insert into body(content)values('往员工表删除了一条数据');