存儲過程作用:執行效率和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
