• mysql存储过程简介


     

    创建存储过程
    CREATE PROCEDURE productpricing(
    OUT pl DECIMAL(8,2),
    OUT ph DECIMAL(8,2),
    OUT pa DECIMAL(8,2)
    )
    BEGIN
        SELECT Min(prod_price)
        INTO pl
        FROM products;
        SELECT Max(prod_price)
        INTO ph
        FROM products;
        SELECT Avg(prod_price)
        INTO pa
        FROM products;
    END;

    执行存储过程
    CALL productpricing(@pricelow,
    @pricehigh,
    @priceaverage);

    查看结果
    SELECT @pricehigh, @pricelow, @priceaverage;

    删除存储过程
    DROP PROCEDUCE productpricing;

    有IN和OUT参数的例子
    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(20005, @total);

    查看
    SELECT @total;

    不像多数DBMS,MySQL游标只能用于存储过程(和函数)
    创建游标
    CREATE PROCEDURE processorders()
    BEGIN
        DECLARE ordernumbers CURSOR
        FOR
        SELECT order_num
        FROM orders;
    END;

    打开游标
    OPEN ordernumbers;

    实践是检验真理的唯一标准,是骡子是马拉出来溜溜。
    一把这些代码输进去,发现不对。

    DELIMITER //
    CREATE PROCEDURE peopleage(
    OUT pl DECIMAL(8,2),
    OUT ph DECIMAL(8,2),
    OUT pa DECIMAL(8,2)
    )
    BEGIN    
        SELECT MIN(age)
        INTO pl
        FROM people;
        SELECT MAX(age)
        INTO ph
        FROM people;
        SELECT AVG(age)
        INTO pa
        FROM people;
    END;

    //
    DELIMITER ;
    注:需要用DELIMITER来作为开始结束

  • 相关阅读:
    camke 参数
    17.计算1-100之和+1-50的平方和+1-10的倒数
    16.求Sn=a+aa+aaa+aaaa.......之值
    15.计算1!+2!+3!+.....20!=?
    14.输出所有的“水仙花”
    13.企业发放的奖金根据利润提成
    12.输入一个成绩计算其A,B,C,D,E等级
    11.键盘输入小于1000的整数
    10.求方程的根
    2019考研历程回顾
  • 原文地址:https://www.cnblogs.com/ldms/p/5842183.html
Copyright © 2020-2023  润新知