存储过程作用:执行效率和SQL 代码封装

in,out,inout的简单使用:

in:参数in的使用(代表输入,意思说你的参数要传到存过过程的过程里面去)

create procedure p1(in n int)
begin
declare total int default 0; // 申明变量用 declare
declare num int default 0;
while num < n do
set num:=num+1;  // 对一个变量赋值用 set 
set total:=total+num;
end while;
select total;
end

call p1(10)  //调用存储过程用call

out:参数out的使用(代表往外输出)

 

create procedure p2(in n int,out total int)
begin
declare num int default 0;
set total:=0;
while num < n do
set num:=num+1;
set total:=total+num;
end while;
end

call p2(100,@sum) //这里的@sum就是我定义用来接收处处total的值
select @sum

 

intout:参数inout的使用(既能输入一个值又能传出来一个值)

create procedure p3(inout age int)
begin
set age:=age+10;
end

set @currentAge=8
call p3(@currentAge)
select @currentAge

第四种情况:不使用前面三种,直接定义存储过程

例子:

CALL studentS("张三","1001");

CALL outr("张三","1001");


CREATE DEFINER=`root`@`localhost` PROCEDURE `outr`(name varchar(40),id varchar(40))
BEGIN
    #Routine body goes here...
SELECT * FROM student WHERE name = name AND sid = id;
END


CREATE DEFINER=`root`@`localhost` PROCEDURE `studentS`(name varchar(40),id varchar(20))
BEGIN
    #Routine body goes here...
SELECT * FROM student WHERE sname = name and id = id ;
END