首页 > 头条 > > 内容页

【热闻】12)自定义函数

时间:2023-05-30 02:10:54 来源:博客园

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

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

要注意:

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


(资料图)

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

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

2、函数创建和调用:

1)无参函数类型:

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

#无参类型create function row_no_fn() returns intbegin    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\Gshow 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;
x 广告
猜你喜欢