zoukankan      html  css  js  c++  java
  • MySQL创建存储过程

      SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

      存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。

    创建存储过程

    mysql> create procedure 过程名([in|out|inout] [变量名] [变量类型])
        -> begin
        -> ...
        -> end;
    DELIMITER //
      CREATE PROCEDURE myproc(OUT s int)
        BEGIN
          SELECT COUNT(*) INTO s FROM students;
        END
        //
    DELIMITER ;

      分隔符:MySQL默认以";"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。

      参数:

        IN:传递给存储过程

        OUT:从存储过程中传出

        INOUT:对存储过程传入和传出

    调用存储过程

      call 存储过程名([@变量1,@变量2...]);

      select @变量1;

    建立智能存储过程

    --Name:ordertotal
    --Parameters:onumber=order_number
    --             taxable=0 if not taxable,1 if taxable
    --             ototal=order total variable
    
    CREATE PROCEDURE ordertotal
    (
        IN onumber INT,
        IN taxable BOLLEAN,
        OUT ototal DEMCIAL(8,2)
    )COMMENT 'Obtain order total,optionlly adding tax'
    BEGIN
        --Declare variable for total
        DECLARE total DEMCIAL(8,2);
        --Declare tax percentage
        DECLARE taxrate INT DEFAULT 6;
        
        --Get the order total
        SELECT Sum(item_price*quantity)
        FROM orderitems
        WHERE order_num=onumber
        INTO total;
        
        --Is this taxable?
        IF taxable THEN
            --Yes,so add taxrate to the total
            SELECT total+(total/100*taxrate) TNTO total;
        END IF;
        
        --And finally,save to out variable
        SELECT total INTO ototal;
    END;
        
    1. 获得合计
    2. 把营业税有条件的添加到合计
    3. 返回合计(带税或不带税)

    可以再存储过程中包含comment的值,他不是必须的 ,但是如果给出,在show procedure status的结果中显示

  • 相关阅读:
    替换掉一段 以 $ 开头 $ 结尾 的字符串
    react 中使用 codemirror2(在线代码编辑器)读取 yaml 文件
    第四篇:前端读取文件 | FileReader 对象及其属性
    umi 如何使用 Mock 模拟数据
    loading 动画 系列
    网站页面上标签页小图标的添加方式
    Linux tail命令
    Python实现字符串反转的方法
    Redis 配置远程访问
    消息队列
  • 原文地址:https://www.cnblogs.com/tianzeng/p/9288316.html
Copyright © 2011-2022 走看看