Back

mysql - 存储过程的入门

发布时间: 2017-06-21 01:22:00

存储过程, stored procedure,  第一次听说是在2006年,第一个项目中,  当时的甲方老板跟我侃侃而谈,说到了这个东西.

可惜的是,这是一个死掉的技术.  过去十一年,我从来没有在项目中使用过. 

之前存储过程是个比较高级的特性, 据说是性能好.  但是现在mysql也支持了.  

跟View(视图),  Table( 表) 一样,  存储过程 也是一个"基本元素", 从 mysql workbench中就可以看出来:

Screenshot From 2017 06 21 09 25 02 Mysql存储过程

下面, 我们就看一下 上面的 proc_adder 是如何建立的( proc_ 这个前缀貌似很多人都喜欢用)

CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_adder`(in a int, in b int, out sum int)
begin

    declare c int;
    if a is null then set a = 0;
    end if;
    
    if b is null then set b = 0;
    end if;
    
    set sum = a + b;
    
end

在mysql控制台中 输入这段代码, 然后执行,就会发现这个 存储过程已经被建立了.

然后我们来调用它:

set @a = 6;
call proc_adder(2, @a, @result);
select @result as my_result;

执行上面的语句,就可以得到结果: 

# | my_result

1 | 8 

Screenshot From 2017 06 21 09 32 31 存储过程的调用

另一个存储过程的例子:

create procedure procedureName( 
    out min decimal(8,2), 
    out avg decimal(8,2), 
    out max decimal(8,2) 
) 
BEGIN 
    select MIN(price) INTO min from order; 
    select AVG(price) into avg from order; 
    select MAX(price) into max from order; 
END;  

Back