mysql数据库自定义函数格式_MySQL自定义函数

本文介绍了MySQL中创建、使用和管理自定义函数的方法,包括DETERMINISTIC、NO SQL等函数特征,以及IF语句、CASE语句和循环语句在函数中的应用。示例包括加法函数、年龄判断函数、成绩评价函数和数字求和函数。
摘要由CSDN通过智能技术生成

自定义函数

自定义函数和存储过程很像, 只不过自定义函数不需要手动通过call调用

而是和其它的聚合函数一样会在SQL语句中自动被调用

例如: select avg(score) from stu;

例如: select count(*) from stu where age >=18;

创建自定义函数

create function 函数名(形参列表) returns 数据类型 函数特征

begin

sql语句;

... ...

return 值;

end;

函数特征

DETERMINISTIC: 不确定的

NO SQL 没有SQl语句,当然也不会修改数据

READS SQL DATA 只是读取数据,不会修改数据

MODIFIES SQL DATA 要修改数据

CONTAINS SQL 包含了SQL语句

调用函数

select 函数名称(参数) from dual;

create function fn_add(a int, b int) returns int DETERMINISTIC

begin

declare sum int default 0;

set sum = a + b;

return sum;

end;

create function check_stu(stuId int) returns varchar(255) DETERMINISTIC

begin

declare stuName varchar(255) default '';

select name into stuName from stu where id=stuId;

return stuName;

end;

查看函数

查看所有函数

show function status;

查看指定数据库中的函数

show function status where db='db_name';

查看函数源代码

show create function show_stu;

删除函数

drop function show_stu;

IF语句

if 条件表达式 then

... ...

elseif 条件表达式 then

... ...

else

... ...

end if;

create function fn_test(age int) returns varchar(255) DETERMINISTIC

begin

declare result varchar(255) default '';

if age >= 18 then

set result = '成年人';

else

set result = '未成年人';

end if;

return result;

end;

create function fn_test2(score int) returns varchar(255) DETERMINISTIC

begin

declare result varchar(255) default '';

if score < 0 || score > 100 then

set result = '没有这个分数';

elseif score < 60 then

set result = '不及格';

elseif score < 80 then

set result = '良好';

else

set result = '优秀';

end if;

return result;

end;

CASE语句

case

when 条件表达式 then

... ...

when 条件表达式 then

... ...

end case;

create function fn_test3(score int) returns varchar(255) DETERMINISTIC

begin

declare result varchar(255) default '';

case

when score=100 then

set result = '还需努力';

when score=0 then

set result = '不需要努力了';

end case;

return result;

end;

循环语句

while 条件表达式 do

... ...

end while;

1 + n 的和 1 + 2 + 3 + 4 + 5

create function fun_test4(num int)returns int DETERMINISTIC

begin

declare sum int default 0;

declare currentIndex int default 1;

while currentIndex <= num do

set sum = sum + currentIndex;

set currentIndex = currentIndex + 1;

end while;

return sum;

end;

repeat

... ...

until 条件表达式 end repeat;

create function fun_test6(num int)returns int DETERMINISTIC

begin

declare sum int default 0;

declare currentIndex int default 1;

repeat

set sum = sum + currentIndex;

set currentIndex = currentIndex + 1;

until currentIndex > num end repeat;

return sum;

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值