一.需求:有三张表,分表是学生表,科目表和分数表:
要求:创建一个带输出参数的存储过程,输出的参数有两个,第一个输出参数的值为分数总分/总人数,第二输出参数的值为分数总分*总人数
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