存储过程作用:执行效率和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