zoukankan      html  css  js  c++  java
  • MySQL_存储过程

    MySQL 存储过程 http://www.cnblogs.com/chenpi/p/5136483.html#undefined

    1.什么是存储过程

    简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用;

    2.存储过程的特性

    有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能

    函数的普遍特性:模块化,封装,代码复用;

    速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤;

    3.创建一个存储过程

    存储过程proc_adder功能很简单,两个整型输入参数ab,一个整型输出参数sum,功能就是计算输入参数ab的结果,赋值给输出参数sum

    几点说明:

    DELIMITER ;;:之前说过了,把默认的输入的结束符;替换成;;

    DEFINER:创建者;

    -- ----------------------------

    -- Procedure structure for `proc_adder`

    -- ----------------------------DROP PROCEDURE IF EXISTS `proc_adder`;

    DELIMITER ;;CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_adder`(IN a int, IN b int, OUT sum int)BEGIN

        #Routine body goes here...

     

        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

    ;;

    DELIMITER ;

    执行以上存储结果,验证是否正确,如下图,结果OK:

    set @b=5;

    call proc_adder(2,@b,@s);

    select @s as sum;

    4.存储过程的弊端

    不同数据库,语法差别很大,移植困难,换了数据库,需要重新编写;

    不好管理,把过多业务逻辑写在存储过程不好维护,不利于分层管理,容易混乱,一般存储过程适用于个别对性能要求较高的业务,其它的必要性不是很大;

  • 相关阅读:
    C函数
    iOS开发- 蓝牙后台接收数据(BLE4.0)
    相册权限 第一次安装、用户是否授权
    使用免费的产品搭建直播系统
    搭建HTTP Live Streaming直播系统
    HTTP Live Streaming直播(iOS直播)技术分析与实现
    个人工作总结03
    个人工作总结02
    个人工作总结01
    第七周学习进度
  • 原文地址:https://www.cnblogs.com/lele925/p/7349028.html
Copyright © 2011-2022 走看看