搜索
写经验 领红包

mysql函数大全(mysql函数vl)

导语:mysql函数,20分钟玩儿转,就是这么的简单

mysql 函数大全(mysql函数nvl)

自定义函数

创建

在 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从业者。

本文内容由小畅整理编辑!