三十六、存储过程小练

205 阅读1分钟

上一篇文章讲解了存储过程的语法,那么这篇文章我们就利用存储过程来实现一个功能:给用户发邮件。

一、创建表

首先我们需要创建一个用户表和邮件表

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
  1. 向 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');