存储过程
1.简单存储过程
用DELIMITER $$ 定义分隔符为$$,这个可以自己定义。最后用DELITIMTER ; 把分隔符换回来,在delimiter后面一定要有一个空格。

 CREATE PROCEDURE 过程名(参数1,参数2,...)
  下面是主体,begin...end,中间写过程

BEGIN
   SELECT * FROM test.退货;
  END;

完整代码:

DELIMITER $$
 CREATE PROCEDURE 没有参数的过程()
  BEGIN
   SELECT * FROM test.退货;
  END;
$$
DELITIMTER ;

调用过程:

call 没有参数的过程();

2.带变量声明的两个过程

declare 变量名 变量类型 默认值;

注意:多个变量要分行声明

变量赋值的方法

1). set a = 'user';

2). select 聚合函数/表中的列名 into 变量名 from 表名;

select 变量名; #返回变量值

DELIMITER $$
CREATE PROCEDURE 复杂无参过程()
BEGIN
  BEGIN
   DECLARE sum_student VARCHAR(20) default '';
   DECLARE birthday INT(3) DEFAULT 0;
   SELECT COUNT(*) INTO sum_student FROM students;
   SELECT SUM(student_birthday) INTO birthday FROM students;
   SELECT sum_student,birthday;
  END;
  BEGIN
   DECLARE ID VARCHAR(20) DEFAULT '';
   SELECT SUM(student_id) INTO ID FROM students;
   SELECT ID;
  END;
 END
$$
DELIMITER ;

3.带全局变量的过程

变量是有作用域的,在begin..end之间有效,end结束变量的作用范围结束。

需要在多个块之间传递值时,可以使用全局变量。即在最前面的begin里写。

BEGIN 
  DECLARE 总数 INT(5) DEFAULT 0;
  BEGIN
   SELECT COUNT(*) INTO 总数 FROM 订单;
  END;
 SELECT 总数;
END