MySQL存储过程-学习笔记

一、存储过程

1、概念

1.1、含义

相当于Java中的方法

1.2、优点

  1. 减少了编译次数,减少了和数据库服务器的连接次数,提高了效率
  2. 提高代码的重用性

二、语法

2.1、创建语法

create procedure 存储过程名(参数列表)
begin
	存储过程体(一组合法的SQL语句)
end

注意:

  1. 参数列表包含三部分
    1. 参数模式
    2. 参数名
    3. 参数类型
    4. 举例:IN stuname varchar(20)
  2. 参数模式:
    1. IN:该参数可以作为输入,也就说需要调用方传入值
    2. OUT:该参数可以作为输出,也就是返回值
    3. INOUT:既可以作为输入,也可以作为输出
  3. 如果存储过程体仅仅只有一句话,begin ,end可以省略
  4. 存储过程中的每条SQL语句的结尾,要求必须加分号
  5. 存储过程的结尾可以使用 delimiter 重新设置 语法:delimiter $

2.1.1、空参

create procedure myp1()
begin
	select * from student s where s.sid = 1; 
end $

2.1.2、输入参数

DELIMITER $
CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGIN
	SELECT bo.*
	FROM boys bo
	RIGHT JOIN beauty b ON bo.id = b.boyfriend_id
	WHERE b.name=beautyName;
END $

2.1.3、多输入参数

CREATE PROCEDURE myp4(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))
BEGIN
	DECLARE result INT DEFAULT 0;#声明并初始化变量
	
	SELECT COUNT(*) INTO result#赋值
	FROM admin
	WHERE admin.username = username
	AND admin.password=PASSWORD;

	SELECT IF(result>0,"登录成功","失败");#使用
END $

2.1.4、带输出参数

#根据输入的女生名,返回其男朋友名
CREATE PROCEDURE myp5(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
BEGIN
	SELECT bo.boyName INTO boyName
	FROM boys bo
	INNER JOIN beauty b ON bo.id = b.boyfriend_id
	WHERE b.name = beautyName;
	
END $

DROP PROCEDURE myp5;

#调用

CALL myp5('小昭',@bName);
SELECT @bName;

2.1.5、INOUT参数

#需求:传入两个参数,使值翻倍并返回
CREATE PROCEDURE myp6(INOUT a INT,INOUT b INT)
BEGIN 
	SET a = a * 2;
	SET b = b * 2;
END $

#设置局部变量
SET @a = 10;
SET @b = 20;


CALL myp6(@a,@b);

SELECT @a,@b;

2.2、调用语法

call 存储过程名(实参列表)$

三、查看、删除

3.1、查看

show create procedure xxx(存储过程名)

3.2、删除

drop procedure xxx

3.2、修改

不能修改过程体,只能删除重建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值