一.需求:有三張表,分表是學生表,科目表和分數表:
要求:創建一個帶輸出參數的存儲過程,輸出的參數有兩個,第一個輸出參數的值為分數總分/總人數,第二輸出參數的值為分數總分*總人數
1.學生表(學生號,學生姓名,學生地址)

2.科目表(科目編碼,科目名稱)

3.分數表(學生號,科目編碼,分數)

二.創建輸出參數的存儲過程
CREATE PROCEDURE `proc_auto_date2`( out ave FLOAT,out sum1 FLOAT) begin DECLARE score1 FLOAT; -- 聲明變量score1 DECLARE number1 int; -- 聲明變量number1 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 ave; -- 輸出ave select sum1; --輸出sum1 end |
三.調用帶輸出參數的存儲過程
1)使用call proc_auto_date2(@ave,@sum1);
調用成功之后,可以使用
select @ave -- 單獨輸出@ave的值
select @sum1 -- 單獨輸出@sum1的值
select @ave,@sum1 -- 同時輸出@ave,@sum1的值
2)或者直接找到存儲過程,直接運行

四.創建一個帶輸出參數的存儲過程,要求調用上一個存儲過程的值
要求:call proc_auto_date2(@ave,@sum1)的@ave,@sum1值進行求和
CREATE PROCEDURE `proc_auto_date3`( out test1 int) -- test1為輸出參數 begin declare number2 int; 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