12)自定义函数

Posted xuan01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12)自定义函数相关的知识,希望对你有一定的参考价值。

 1、创建自定义函数语法:

create function 函数名(参数1,参数2,...) returns 返回值数据类型
begin
    函数体
    return 语句;
end;

要注意:

1)、自定义函数是数据库的对象,创建时,需要指定该函数属于哪个数据库;

2)、同一个数据库内,自定义函数不能和已有的函数名重名;

3)、函数必须指定返回值数据类型,且与return语句返回值类型相匹配;

 

2、函数创建和调用:

1)无参函数类型:

创建函数:行号自动加一;

#无参类型
create function row_no_fn() returns int
begin
    set @row_no = @row_no + 1;
    return @row_no;
end;

接着我们调用函数;

set @row_no = 0;
select row_no_fn() 行号,student_name 姓名, student_no 学号 from student;

 2)有参数类型:

创建函数:给定学号,给出姓名;

#有参数类型:
create function get_name_fn(stu_no int) returns char(20)
begin
    declare stu_name char(20);
    select student_name into stu_name from student where student_no = stu_no;
    return stu_name;
end;

调用函数:

set @fn_no = \'2023003\';
select get_name_fn(\'2023003\'),get_name_fn(@fn_no);

 

 要注意:

  1)、先写参数名 再写参数类型,逗号隔开;

  2)、在函数中,不允许出现有结果集产生的语句;所以使用select into语句,还要确保select 的结果集是单行的,赋值给单个变量;;

  3)、声明变量名或参数名不能和表明或字段名重名;

 

3、函数维护:

查看函数:

1)查看当前数据库中所有自定义函数信息:

show function status\\G
show function status like \'模式‘\\G

此处的模式可以见下例:

show function status like \'%\\_fn\'\\G

2)查看指定数据库所有自定义函数名

select 自定义函数名 from mysql.proc where db=\'数据库名\' and type = \'function\';

此处我们可以查看我们自定义的两个函数:

不过,貌似8.0版本之后的mysql 数据库下的proc表 被删除了???

通过查阅资料,我们发现可以从information_schema数据库下的 parameters表和 routines 表结合看;

可以查看information_schema数据库下的parameters表:通过specific_name = ’自定义函数名‘ :

select * from parameters where specific_name = \'get_name_fn\'\\G

 

结合routines表,也是通过specific_name = ’自定义函数名‘;此表很详细了;

select * from routines where specific_name = \'get_name_fn\'\\G

 

3)查看指定函数名的详细信息:

show create function 函数名\\G
show create function get_name_fn\\G

删除函数:

drop function 函数名
drop function row_no_fn;

 

thinkphp 自定义函数放哪里

thinkPhp3.2 的在 /ThinkPhp/Common/function.php
thinkPhp5 在模块下 即 Application/common.php 直接放进去就可以了
参考技术A function.php
引入即可使用

以上是关于12)自定义函数的主要内容,如果未能解决你的问题,请参考以下文章

python中自定义排序函数

带有 CASE 的 Postgres 自定义函数

MySQL之自定义函数与存储过程

SQL自定义函数返回记录

python3.5修炼手册12

怎么把EXCEL表格日期2017-02-03 11:59:12 自定义格式改为常规且单元格仍显示那个日期呢?