/*
参数模式:
IN:该参数作为输入,该参数调用传入值
out:该参数作为输出,该参数作为返回值
INOUT:该参数即可作为输入,也可作为输出,该参数即可调用传入值,也可作为返回值
delimiter:设置结束标记,比如 //、$、#
delimiter #
*/
1、不带参数存储过程
delimiter //
create procedure mies()
BEGIN
select * from student ;
END
//
drop PROCEDURE mies();
call mies();
2、带参数 in 存储过程
delimiter //
/*传入参数,设置参数类型*/
create procedure mies(in sid int)
BEGIN
select * from student where sid=sno;
END
//
drop PROCEDURE mies();
/*设置参数值*/
set @sid=20162010;
call mies(@sid);
/*登录用户名*/
delimiter //
create procedure login(in sno int,in sname VARCHAR(16))
BEGIN
declare result int DEFAULT 0;#声明并初始化
select COUNT(*) into result from student #赋值
where student.sno=sno and student.sname=sname;
select IF(result>0,'成功','失败');
END
//
call login(20162002,'晨晨')
/*使用inout函数*/
delimiter //
create procedure inouta(inout a int,inout b int)
BEGIN
set a=a*2;
set b=b*6;
END
//
/*
首先定义两个变量
其次给变量赋值
最后选择要打印的结果
*/
set @m=6;
set @n=8;
call inouta(@m,@n)
select @m,@n
/*使用in,out函数*/
delimiter //
create procedure info(in sno int,out sname VARCHAR(16),out sage int)
BEGIN
select student.sname,student.sage into sname,sage
from student
where student.sno=sno;
END
//
call info(20162002,@m,@n)
select @m,@n