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、运行结果:
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);
查看下读者信息表:
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、运行结果:
二、函数的删除
drop function showmsg;