7.存储过程

变量

变量
系统变量全局变量针对所有会话(连接)有效,但不能跨重启(这需要修改配置文件)
会话变量对当前会话有效
自定义变量自定义变量1,同于会话变量的作用域,2作用于会话中任何地方 3.必须添加@符号
局部变量1.作用于BEGIN END中 2.BEGIN END的第一句3.一般不加@,需要限定类型
系统变量

1.查看系统变量

show global|session variables

2.查看满足条件的部分系统变量

show global|session variables like ‘%char%’

3.查看某个指定系统变量

select @@ global|session .变量名

4.为某个系统变量赋值

set global|session 系统变量名 = 值

set @@global|session .系统变量名 = 值

===>

SELECT @@global.autocommit							#事务自动提交	
SET @@session.tx_isolation='read-uncommitted'		#更改隔离级别

如果为全局级别,需要加global,会话级别需要加session,如果不写则默认session

用户变量
SET @name='john';
SET @name=100;
SET @count=1;

SELECT COUNT(*) INTO @count
FROM employees;

SELECT @count
局部变量
DECLARE m INT DEFAULT 1;
DECLARE n INT DEFAULT 2;
DECLARE SUM INT;
SET SUM=m+n;
SELECT SUM;

存储过程

优点

1.提高代码重用性

2.简化操作

3.减少编译次数与和数据库服务器的连接次数,提高了效率

存储过程

一组预先编译好的SQL语句集合,理解成批处理语句。

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

BEGIN

​	方法体

END
  • 参数列表

参数模式 参数名 参数类型

IN stuname VARCHAR(20)

参数模式:

IN/OUT/INOUT

  • DELIMITER 结束标记($)
调用语法
  1. IN模式
#插入到admin表中五条记录
SELECT * FROM admin

DELIMITER $
CREATE PROCEDURE myp1()
BEGIN
	INSERT INTO admin(username,'password')
	VALUES('john','0000'),('lily','0000');
END $

#调用
CALL myp1();

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

#调用
CALL myp2('苍老师') $
  • 案例:查看用户是否登陆成功
 CREATE PROCEDURE myp3(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))
 BEGIN
 	DECLARE result VARCHAR(20) DEFAULT '';#声明并初始化
 	SELECT COUNT(*) INTO result        #赋值
 	FROM admin
 	WHERE admin.username = username
 	AND admin.password = PASSWORD
 	SELECT IF(result > 0,‘成功’,'失败');
 END $
 CALL myp3(‘张飞’,'8888') $

2.OUT模式

CREATE PROCEDURE myp6(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT userCP INT)
BEGIN
​	SELECT bo.boyName ,bo.userCP INTO boyName,userCP
​	FROM boys bo
​	INNER JOIN beauty b ON  bo.id = b.friend_id
​	WHERE b.name=beautyName;
END $
CALL myp6('小昭',@bName,@usercp) $

3.INOUT模式

CREATE PROCEDURE myp8(INTOUT a INT,INOUT b INT)
BEGIN
​	SET a=a*2;
​	SET b=b*2;
END$
删除存储过程
DROP PROCEDURE p1;
查看存储过程
DESC myp2;
SHOW CREATE PROCEDURE myp2;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值