zoukankan      html  css  js  c++  java
  • 《mysql必知必会》读书笔记存储过程的使用

    以前对mysql的认识与应用只是停留在增删改查的阶段,最近正好在学习mysql相关内容,看了一本书叫做《MySQL必知必会》,看了之后对MySQL的高级用法有了一定的了解。以下内容只当读书笔记。

    如有转载请注明出处~

    存储过程的使用

    执行存储过程

    CALL productpricing()

      执行名为productpricing的存储过程

    创建存储过程

    CREATE PROCEDURE productpricing()
    BEGIN
    SELECT avg(prod_price) AS priceaverage
    FROM products;
    END;

      注意:如果使用mysql的命令行程序,";"是分隔符,存储过程中也有";"这样会造成使用存储过程中的SQL出现语法错误,解决办法是临时更改语句的分隔符:

    DELIMITER //
    ....
    DELIMITER ;

      其中,除了\ 之外,任何字符都可以用作语句分隔符

    删除存储过程

    DROP PROCEDURE productpring;

      只是给出存储过程的名字,不用跟()

    存储过程参数的使用

    --创建存储过程
    CREATE PROCEDURE ordertotal(
    IN onumber INT,
    OUT ototal DECIMAL(8,2)
    )
    BEGIN
    SELECT sum(item_price*quantity)
    FROM orderitems
    WHERE order_num = onumber
    INTO ototal;
    END;
    --调用
    CALL ordertotal(234567, @total)
    --显示结果
    SELECT @total

    智能存储过程 

      前面的存储过程只是为了解及学习使用,实际应用中的存储过程不是像上面的一样简单。如下是一较为复杂的存储过程:

    -- 创建一个名为ordertotal的存储过程
    -- 参数:onumber-订单号 taxable-是否上税(0,不需要 1,需要) ototal-返回的合计
    CREATE PROCECURE ordertotal(
    IN onumber INT,
    IN taxable BOOLEAN,
    OUT ototal DECIMAL(8,2)
    ) COMMENT 'Obtain order total, optionally adding tax'
    BEGIN
    -- 定义临时变量total-存储查询到的合计
    DECLARE total DECIMAL(8,2)
    -- 临时变量taxrate-税点
    DECLARE taxrate INT DEFAULT 6;
    
    -- 得到查询的合计
    SELECT Sum(item_price * quantity) 
    FROM orderitems
    WHERE order_num = onumber
    INTO total;
    
    -- 判断是否需要上税
    IF taxable THEN
    -- 需要,将上税部分添加进合计
    SELECT total+(total/100*taxrate) INTO total;
    END IF;
    -- 将最终的合计返回
    SELECT total INTO ototal;
    END;
  • 相关阅读:
    根据浏览器是否出现滚动条,显示返回顶部
    HTML5 屏蔽触屏滚动
    url参数中带有+号,服务器端解码之后没了
    jQuery1.9之后使用on()绑定 动态生成元素的 事件无效
    列表页复选框全选效果
    Python安装sqlite3
    python3.5中,import sqlite3 出现 no module named _sqlite3的解决方法
    使用js设置input标签只读 readonly 属性
    怎么获得当前点击的按钮的id名?
    JS 浮点型数字运算(转)
  • 原文地址:https://www.cnblogs.com/wulaa/p/7768069.html
Copyright © 2011-2022 走看看