一、存储过程_概念和作用
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);
网友评论