mysql自定义函数

一、函数的定义和使用

1、无参函数

1、需求:
定义一个返回当前日期的函数,日期的格式为‘xxxx年xx月xx日’
2、函数创建和使用:

-- 创建一个返回当前日期的函数,日期格式为‘xxxx年xx月xx日’;
delimiter//
create function date_Ymd()
returns varchar(20)
begin
return date_format(curdate(),'%Y年%m月%d日');
end//
delimiter;

select date_Ymd();

3、运行结果:
mysql自定义函数

2、有参函数

1、需求:
以下是一个读者信息表,创建一个函数,根据读者身份证号,返回读者姓名、电话和余额的字符串信息,形式是‘姓名-电话-余额‘;

– 读者信息表

create table reader(
card_id char(18) primary key,
name varchar(20) not null,
sex enum('男','女','保密') default'保密',
age tinyint not null,
phone_number char(11) not null,
balance decimal(6,2) default 200
);

– 插入读者记录

insert into reader values('330100199201231104','小明','男',29,'15787223423',300);
insert into reader values('330100199201231105','小红','女',21,'15787223424',220);
insert into reader values('330100199201231106','王迷','男',19,'15787223425',310);
insert into reader values('330100199201231107','李思','女',24,'15787223426',230);
insert into reader values('330100199201231108','小王','女',32,'15787223427',240);
insert into reader values('330100199201231109','王霞','女',26,'15787223428',300);

查看下读者信息表:
mysql自定义函数
2、函数创建和使用:

delimiter//
create function showmsg(myid char(18))
returns varchar(50)
begin
return(select concat(name,'-',phone_number,'-',round(balance,2)) from reader where card_id=myid);
end//
delimiter;

select showmsg('330100199201231107');

3、运行结果:

mysql自定义函数

二、函数的删除

drop function showmsg;