上一篇文章讲解了存储过程的语法,那么这篇文章我们就利用存储过程来实现一个功能:给用户发邮件。
一、创建表
首先我们需要创建一个用户表和邮件表
create table userinfo( id int not null auto_increment primary key, name varchar(30), email varchar(30) ); create table email( id int not null auto_increment primary key, email varchar(30), content text, send_datetime datetime );
二、逻辑分析
1. 获取指定用户的 email;
select email from userinfo where id=用户id
2. 向 email 表插入数据
insert into email(email,content,send_datetime) values (邮箱,发送内容,now())
三、实现
根据上面分析的逻辑和存储过程的语法,实现如下:
delimiter // create procedure send_email(in userid int,in content text) begin /*根据用户id获取邮箱*/ set @user_email=(select email from userinfo where id=userId); /*邮件内容写入email表*/ insert into email(email,content,send_datetime) values(@user_email,content,now()); end; // delimiter ;
调用:
call send_email(1,'hello mysql');