1. MySQL 存储过程和函数

相对应函数/方法,存储函数必须有返回值,存储过程可以没有返回值

2. 存储过程

存储过程可以没有返回值

  1. -- 修改结束分隔符这里指定为$ 可以自定义
  2. delimiter $
  3. -- 创建存储过程
  4. create procedure 存储过程名称(参数列表[可为空]
  5. begin
  6. sql 语句;
  7. end$
  8. -- 恢复结束分割符为分号
  9. delimiter;
  10. -- 调用存储过程
  11. call 存储过程名称(参数);
  • 查询数据中所有的存储 过程 必须是root权限用户

      1. select * from mysql.proc where db='数据库名称';
  • 删除存储过程

      1. drop procedure [if exists] 存储过程名称;

2.1. 变量

  • 定义变量 declare 变量名 数据类型 [default 默认值];
  • 赋值 set 变量名 = 值;
  • 赋值2 select 列名 into 变量名 from 表名 [where 条件];

2.2. if语句

  1. if 判断条件1 then sql语句;
  2. elseif 判断条件2 then sql语句;
  3. else sql语句;
  4. end if;

2.3. 传参

  • IN 默认值 输入参数关键字 由调用者传递实参
  • OUT 输出参数,作为返回值返回
  • INOUT 即可以为输入也可以为输出
  1. create procedure 存储过程名([IN|OUT|INOUT] 参数名 数据类型)
  2. BEGIN
  3. SQL 语句;
  4. END$
  5. -- 调用
  6. call 存储过程名(@输出参数名);
  7. -- 查询返回值
  8. select @输出参数名

2.4. while 循环

  1. while 判断语句 do
  2. 循环体语句;
  3. end while;

3. 存储函数

存储函数必须要有返回值 即有out参数

  1. delimiter $
  2. create function 函数名称(参数列表)
  3. returns 返回值类型
  4. begin
  5. sql语句;
  6. return 返回值;
  7. end$
  8. delimiter ;
  9. -- 调用
  10. select 函数名称(实际参数);
  • 删除函数 drop function 函数名;