Mysql—存储过程和UDF函数
一、存储过程和UDF函数的区别
二、存储过程的定义
存储过程定义示例
获得大一成绩最大值和对应的学员名称
delimiter $$
create procedure getMaxScoreAndName
(in gradeName varchar(50),out maxScore decimal(5,2),out topstudent varchar(20))
begin
select max(score) from result r join subject s on subNO=subjectNo
join grade g on g.gradeId=s.gradeId
where g.gradeName=gradeName into maxScore;
select stu_name from student join result on stu_id=stuNo
where score=maxScore into topstudent;
if @RETURNED_SQLSTATE!=null
then select 1 incrrect;
else select 2 correct;
end if;
end$$
delimiter ;
call getMaxScoreAndName('大一',@max,@student);
select @max,@student;
三、UDF函数的定义
UDF函数的定义示例:
delimiter $$
create function func_sum(num int(3)) returns int
begin
declare n int(11) default 1;
declare sum int(11) default 0;
while n<=num do
set sum=sum+n;
set n=n+1;
end while;
return sum;
end$$
delimiter ;
select func_sum(50);