存儲過程,in,out,inout的區別


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM