之前在學習mysql時,通常把筆記記錄到word文檔,最近打算學習下springdatajpa調用存儲過程。(忘記在命令行行中怎么調用存儲過程了),找了好久才找到之前的筆記,在此將之前內容拷貝到博客,順便回顧下存儲過程與函數。
存儲過程的調用:
1、參數為In類型:
案例功能:求1-n的和
-- 求1----n的和 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 $$ delimiter ; call p1(100);
2、參數為out類型:這里還要注意一點的就是我們的輸出參數一定要設置相應類型的初始,否則不管你怎么計算得出的結果都為NULL值
案例功能:求1-n的和
delimiter $$ 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 $$ delimiter ; -- 調用 call p2(100,@res); select @res;
注意:對於第一個輸入參數我們可以理解,但是第二個輸出參數我們到底應該怎么輸?
這里我們需要對第二個參數定義一個變量名(更形象點就是你輸入一個輸入類型的參數n,由輸出參數total往外輸出我們只需要定義一個變量名來接收這個輸出值即可)
call p2(100,@sum)$//這里的@sum就是我定義用來接收處處total的值
select @sum;
3.參數為INOUT類型
案例功能:傳一個年齡,自動讓年齡增長10歲
delimiter $$ create procedure p4(inout age int) begin set age=age+10; end $$ -- 調用過程 set @age=8; call p4(@age); select @age;
注意:調用的時候,我這里需要和大家聲明一下,inout型的參數值既是輸入類型又是輸出類型,你給它一個值,值不是變量,不是變量那out的時候它怎么賦給這個值是不是?
因此我們需要先設置一個變量並初始化這個值,調用的時候直接傳這個變量即可