mysql存儲過程中in、out、inout參數使用
代表輸入,意思說你的參數要傳到存過過程的過程裏面去。基本可以理解為傳入function的參數,而如果該參數是個變量,那麽整個procedure過程結束後,不會影響外部的變量值。
/
案例功能:求1-n的和
開發者:徐守威
時間:2016-08-13
/
delimiter $
create procedure p1(in n int)
begin
declare total int default 0;
declare num int default 0;
while num < n do
set num:=num+1;
set total:=total+num;
end while;
select total;
end$**
調用 call p1(10)$
out
可以理解為某個function要改變的外部變量,不管這個變量在外部是什麽值,在內部的初始值都是null,而內部對它的影響將改變這個外部變量值。
直接給一個procedure傳一個out參數是沒有意義的,因為out值在procedure默認都會被初始為null。
/
案例功能:求1-n的和
開發者:徐守威
時間:2016-08-13
*/
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;
end while;
end$**
調用 call p2(100,@sum)$//這裏的@sum就是我定義用來接收處處total的值
select @sum$
inout
既能輸入一個值又能傳出來一個值。可以理解為一個function在內部聲明了global ,並可能對該變量值進行修改。
/
功能:傳一個年齡,自動讓年齡增長10歲
開發者:徐守威
時間:2016-08-13
/
create procedure p3(inout age int)
begin
set age:=age+10;
end$
註意:調用的時候,我這裏需要和大家聲明一下,inout型的參數值既是輸入類型又是輸出類型,你給它一個值,值不是變量,不是變量那out的時候它怎麽賦給這個值是不是?
調用:
set @currentAge=8$
call p3(@currentAge)$
select @currentAge$**
mysql存儲過程中in、out、inout參數使用