存储过程是一组为了完成特定功能的 SQL 语句集,实质是一段存储在数据库中的代码,它可以由声明式的SQL语句和过程式的SQL语句组成

创建存储过程

DELIMITER 命令:修改MySQL结束符

  1. DELIMITER $$
  2. CREATE PROCEDURE sp_name([proc_parameter[,...]])
  3. routine_body
  1. use mt;
  2. delimiter $$
  3. create procedure sp_update_sex(in cid int,in csex char(1))
  4. begin
  5. update cust set sex=csex where cust_id=cid;
  6. end $$

调用存储过程

  1. CALL sp_name([parameter[,...]])
  2. CALL sp_name[()]

删除存储过程

  1. DROP PROCEDURE [IF EXISTS] sp_name;

存储过程体

1、DECLARE 语句生命局部变量

  1. DECLARE var_name[,...] TYPE [DEFAULT value]

示例:

  1. declare cid int(10);

(1)只能在存储过程体的 BEGINEND 语句块中声明
(2)必须在存储过程体的开头处声明
(3)作用范围仅限于声明它的 BEGINEND 语句块
(4)不同于用户变量

2、使用 set 语句为局部变量赋值

  1. set cid=910;

3、使用select … into 语句把选中列的值直接存储到局部变量中(select … into语句只能返回一行数据)

  1. SELECT col_name[,...] INTO var_name[,...] tbl_expr
  2. // tbl_expr表示select语句中的from子句及后面的语法部分

4、流程控制语句

条件判断语句

  • IF … THEN … ELSE 语句
  • ITERATE 语句
  • CASE 语句

    循环语句

  • WHILE 语句

  • REPEAT 语句
  • LOOP 语句

    5、使用 DECLARE CURSOR 创建游标

    1. declare cursor_name cursor for select_statement

    6、使用 OPEN cursor_name 打开游标

    7、使用 fetch … into 语句读取数据

    1. FETCH cursor_name INTO var_name[,var_name]...
  • cursor_name 指向已打开的游标

  • var_name 指向存放数据的变量名