MySQL存储过程

一、存储过程_概念和作用

1).什么是"存储过程":它就是一组SQL语句的集合,它类似于"函数",可以接收参数,可以有返回值。
                    只是"函数"只能返回一个值;而"存储过程"比函数更加强大,可以返回多个值;
            存储过程内部可以包含一些"可编程语句":if语句,循环语句...
2).可以预先定义一组的"SQL操作",而且可以接收参数。后期可以通过SQL语句调用。可以放我们很方便、灵活
   的操作一组SQL语句。

二、存储过程_基本语法

1).基本语法:
    DELIMITER$$ #定义"分解符",避免分号作为结束。定义$$作为结束符号。
    CREATE PROCEDURE p1()
    BEGIN
        SELECT * FROM cus;
        SELECT * FROM orders;
        SELECT * FROM cus c,orders o WHERE c.cid = o.cid;

    END$$
2).调用存储过程:
    CALL p1();

三、存储过程_带输入参数(IN)的存储过程

1).示例代码:定义存储过程:
    DELIMITER$$
    CREATE PROCEDURE p2_in(IN p INT,IN startDate VARCHAR(20),IN endDate VARCHAR(20))
    BEGIN
        SELECT * FROM product WHERE price = p AND prodate BETWEEN startDate AND endDate;
    END$$
2).调用存储过程:
    CALL p2_in(5000,'2017-10-01','2017-10-03');

四、存储过程_带输出参数(OUT)的存储过程

1).示例代码:定义存储过程:
    DELIMITER$$
    CREATE PROCEDURE p3_out(IN pn VARCHAR(100),OUT pri DOUBLE)
    BEGIN
        SET pri = (SELECT  price  FROM product WHERE pname = pn);
    END$$
2).调用存储过程:
    SET @p = 0;
    CALL p3_out('劲霸',@p);
    SELECT @p;

五、存储过程_带输入输出参数(INOUT)的存储过程

1).示例代码:定义存储过程:
    DELIMITER$$
    CREATE PROCEDURE p4_inout(INOUT p VARCHAR(100))
    BEGIN
        SET p = (SELECT price FROM product WHERE pname = p);
    END$$
2).调用存储过程:
    SET @p = '联想';
    CALL p4_inout(@p);
    SELECT @p;

六、存储过程_IF语句

1).示例代码:定义存储过程:
    DELIMITER$$
    CREATE PROCEDURE p5_if(IN a INT)
    BEGIN
        IF a = 0 THEN
            SELECT pname FROM product;
        ELSEIF a =1 THEN
            SELECT price FROM product;
        ELSEIF a = 2 THEN
            SELECT prodate FROM product;
        ELSE
            SELECT * FROM product;
        END IF;
    END$$
2).调用存储过程:
    CALL p5_if(3);

七、存储过程_CASE语句

1).示例代码:定义存储过程:
    DELIMITER$$
    CREATE PROCEDURE p6_case(IN a INT)
    BEGIN
        CASE a
        WHEN 0 THEN
            SELECT pname FROM product;
        WHEN 1 THEN
            SELECT price FROM product;
        WHEN 2 THEN
            SELECT prodate FROM product;
        ELSE
            SELECT * FROM product;
        END CASE;
    END$$
2).调用存储过程:
    CALL p6_case(3);    

八、存储过程_WHILE语句

1).示例代码:定义存储过程:
    DELIMITER$$
    CREATE PROCEDURE p7_while(IN a INT,IN b INT)
    BEGIN
        DECLARE temp INT;
        SET temp = a;
        WHILE temp <= b DO
            INSERT INTO product VALUES(NULL,CONCAT('商品',temp),temp,NULL,NULL);
            SET temp = temp + 1;
        END WHILE;
    END$$
2).调用存储过程:
    CALL p7_while(1,100);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容