mysql之存储过程

本文详细介绍了数据库存储过程的概念、创建及调用方法,包括IN、OUT、INOUT参数模式的使用,以及存储过程的删除和查看。通过具体示例,展示了如何利用存储过程提高SQL语句的重用性和执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、含义:一组预先编译好的sql语句的集合,可以理解成批处理语句

2、好处:提高sql语句的重用性、简化代码、减少了编译次数和数据库的连接次数,提高了效率

3、创建语法

CREATE PROCEDURE  存储过程名(参数列表)
BEGIN
              存储过程体
END

注意:

①、参数列表包含三部分

参数模式   参数名   参数类型

举例:

IN bookname varchar(20)

参数模式包含三种:

IN:该参数作为输入,也就是该参数需要调用方传入值

OUT:该参数作为输出,也就是该参数可以作为返回值

INOUT:该参数既可以作为输出又可以作为输入,也就是该参数既需要传入值,又可以返回值

②、如果存储过程体中仅仅有一句话,BEGIN   END可以省去

③、存储过程体中的每条sql语句要求必须加分号结尾

④、存储过程的结尾可以使用DELIMITER设置

语法:DELIMITER   结束标记

举例:

DELIMITER   $

4、调用语法

CALL   存储过程名(参数列表);

举例:

①、空参的存储过程

DELIMITER  $
CREATE PROCEDURE p1()
BEGIN
    INSERT INTO book(book_name) values('三国演义');
END $

CALL p1()$

②、带IN模式的存储过程

CREATE PROCEDURE p2(IN bookname varchar(20))
BEGIN 
    SELECT * FROM book WHERE book_name like bookname;
END $

CALL p2('三国演义') $

③、带OUT模式的存储过程(根据id查出书名,并输出)

CREATE PROCEDURE p3 (IN id INT,OUT bookname varchar(20))
BEGIN 
    SELECT b.book_name INTO bookname b WHERE b.id=id;
END $

CALL p3(1,@bName)$
SELECT @bName$

④、带INOUT模式的存储过程

传入a和b两个值,最终输出的结果翻倍

CREATE PROCEDURE p4(INOUT a INT,INOUT b INT)
BEGIN
    SET a=a*2;
    SET b=b*2;
END$

SET @m=10$
SET @n=4$
CALL(@m,@n)$

5、删除存储过程(一次只能删除一个)

DROP PROCEDURE p1

6、查看存储过程

SHOW CREATE PROCEDURE p4

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值