mysql存储过程

什么是存储过程

有时我们在完成某个业务逻辑的时候需要一组SQL语句,比如为了完成一个购买商品的订单,需要考虑以下内容:

  1. 先查询库存是否有相应的商品
  2. 如果库存有该商品,需要预定商品以便该商品不能卖给别人,修改库存
  3. 如果没有该商品,需要采购

对于上述的完整操作,可能需要多条SQL语句。

存储过程可以简单的理解事先编译过并存储在数据库中的一条或多条SQL语句的集合。

存储过程的创建

CREATE  PROCEDURE  存储过程的名称(  IN|OUT 参数名  参数类型 )

SQL语句

存储过程的SQL语句经常放在BEGIN…END中

存储过程的参数IN表示输入, OUT表示输出, INOUT表示输入/输出

创建简单的存储过程:

CREATE PROCEDURE proc_listemp( )
BEGIN
    SELECT * FROM emp;
END

CALL proc_listemp();

创建有输入参数的存储过程

CREATE PROCEDURE proc_listemp2(p_no  INT )
BEGIN
    SELECT * FROM emp WHERE EMPNO = p_no;
END

CALL proc_listemp2( 7369 );

创建有OUT输出参数的存储过程

CREATE PROCEDURE proc_listemp3(  IN p_ename VARCHAR(100), OUT p_job VARCHAR(100) )
BEGIN
    SELECT  job  into  p_job from emp WHERE ename = p_ename ;
END

CALL proc_listemp3( 'KING', @job );

SELECT @job;