mysql函数大全(mysql函数vl)
导语:mysql函数,20分钟玩儿转,就是这么的简单
自定义函数
创建
在 MySQL 中,创建自定义函数的语法如下。
CREATE FUNCTION sp_ name ([func_ parameter[,...]])
RETURNS type
[characteristic ...] routine_ body
参数解释:
(1)func_parameter 表示自定义函数的参数列表。func_parameter 可以由多个参数组成,其 中每个参数由参数名称和参数类型组成,其形式如下。
param_name type
其中:
⚫ param_name 参数是自定义函数的参数名称;
⚫ type 参数指定自定义函数的参数类型,该类型可以是 MySQL 数据库的任意数据类型。
(2)RETURNS type 指定返回值的类型。
函数无参数传递
create function fun_an1()
returns int -- 指定返回类型
begin
return (select count(empno) from emp);
end;
-- 调用
select fun_an1();
-- 函数带参数
create function fun_an2(sal decimal(9,0))
returns int
begin
return (select count(empno) from emp where emp.sal=sal);
end;
-- 调用
select fun_an2(1250);
-- 定义变量
create function fun_an3()
returns int
begin
declare eno int default 7399; -- 定义变量,并且赋初始值 ,作用域在begin end 之间
return (select count(empno) from emp where emp.empno = eno);
end;
-- 调用
select fun_an3();
-- if 语句
create function fun_an4()
returns varchar(20)
begin
declare n int default 99;
if n > 90 then
return (&39;);
elseif n > 80 then
return (&39;);
else
return (&39;);
end if;
end;
-- 调用
select fun_an4();
drop function fun_an5;
create function fun_an5(deptno int)
returns varchar(20)
begin
declare dept_name varchar(20) default &39;;
-- 注意:等于用 =
if deptno = 10 then
set dept_name=&34;;
elseif deptno = 20 then
set dept_name=&34;;
elseif deptno = 30 then
set dept_name=&34;;
elseif deptno = 40 then
set dept_name=&34;;
end if;
return (dept_name);
end;
select dept.dname,fun_an5(dept.deptno) from emp,dept where emp.deptno = dept.deptno;
-- 思考,用一句sql语句实现如上的效果
-- 用case方式
create function fun_an6(deptno int)
returns varchar(20)
begin
declare dept_name varchar(20) default &39;;
-- 注意:等于用 =
case deptno
when 10 then
set dept_name=&34;;
when 20 then
set dept_name=&34;;
when 30 then
set dept_name=&34;;
when 40 then
set dept_name=&34;;
else
set dept_name=&34;;
end case;
return (dept_name);
end;
-- 调用
select dept.dname,fun_an6(dept.deptno) from emp,dept where emp.deptno = dept.deptno;
-- 一条语句实现
select dept.dname,
case dept.deptno
when 10 then
&34;
when 20 then
&34;
when 30 then
&34;
when 40 then
&34;
end as dept_name
from emp,dept where emp.deptno = dept.deptno;
-- loop 使用
create function fun_an9()
returns int
begin
declare n int default 0;
nloop:loop
set n = n + 1;
if n < 10 then
-- leave nloop; -- 等价于java中break;
iterate nloop; -- 等价于java中continue
end if;
if n > 10 then
leave nloop; -- 等价于java中break;
-- iterate nloop; -- 等价于java中continue
end if;
end loop nloop;
return (n);
end;
-- 调用
select fun_an7();
select fun_an8();
select fun_an9();
-- repeat
create function fun_repeat()
returns int
begin
declare n int default 0;
repeat
set n = n + 1;
until n > 10
end repeat;
return (n);
end;
-- 调用
select fun_repeat();
-- while
create function fun_while()
returns int
begin
declare n int default 0;
while n < 10 do
set n = n + 1;
end while;
return (n);
end;
-- 调用
select fun_while();
今天我的分享就到这里,大家有没有什么好的学习方法呢?欢迎来留言评论,和我们一起交流。如果喜欢我的文章,也欢迎大家关注、点赞、转发。我是丫丫,一个专注分享项目实战技能的IT从业者。
本文内容由小畅整理编辑!