mysql資料建立帶參的儲存過程,並在儲存過程中呼叫另一個儲存過程
阿新 • • 發佈:2020-11-25
一.需求:有三張表,分表是學生表,科目表和分數表:
要求:建立一個帶輸出引數的儲存過程,輸出的引數有兩個,第一個輸出引數的值為分數總分/總人數,第二輸出引數的值為分數總分*總人數
1.學生表(學生號,學生姓名,學生地址)
2.科目表(科目編碼,科目名稱)
3.分數表(學生號,科目編碼,分數)
二.建立輸出引數的儲存過程
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_auto_date2`( set ave=0; -- 設定ave輸出引數的預設值為0 set sum1=0; -- 設定sum1輸出引數的預設值為0 select sum(score) from score into score1; -- score1變數值 select count(*) from student into number1; -- number1變數值 select score1/number1 into ave; -- ave變數值 -- set ave=score1/number; select score1*number1 into sum1; -- sum1變數值 select sum1; end |
三.呼叫帶輸出引數的儲存過程
1)使用call proc_auto_date2(@ave,@sum1);
2)或者直接找到儲存過程,直接執行
四.建立一個帶輸出引數的儲存過程,要求呼叫上一個儲存過程的值
要求:call proc_auto_date2(@ave,@sum1)的@ave,@sum1值進行求和
declare ave FLOAT; -- 宣告ave為儲存過程proc_auto_date2的第一個輸出引數 declare sum1 FLOAT; -- 宣告sum1為儲存過程proc_auto_date2的第二個輸出引數 set number2=200; -- 呼叫儲存過程 proc_auto_date2(ave,sum1) call proc_auto_date2(ave,sum1) ; -- 將儲存過程proc_auto_date2的兩個輸出引數的和+number2變數的值賦值給test1輸出引數 set test1=@ave+@sum1+number2; select test1; end |
呼叫儲存過程:
五. 刪除儲存過程
DROP PROCEDURE 儲存過程名
DROP PROCEDURE proc_auto_date3