MySQL-存储过程

变量
系统变量 
  全局变量:服务器重启,全局变量都会恢复默认值,如果想要永久生效,需修改配置文件
  会话变量:只对当前session有效,如使用navicat,新建一个查询页就是一个新的会话
-- 查看全局变量
SHOW GLOBAL VARIABLES;
-- 查看会话变量 SESSION可省略
SHOW SESSION VARIABLES;
-- 查看指定的变量 SESSION可省略
SHOW GLOBAL VARIABLES LIKE '%char%';
SHOW SESSION VARIABLES LIKE '%char%';
-- 查看某个系统变量的值 SESSION可省略
SELECT @@global.系统变量名;
SELECT @@session.系统变量名;
-- 设置变量的值 SELECT @@global.系统变量名;
SET GLOBAL 系统变量名 = '值';
SET SESSION 系统变量名 = '值';
自定义变量
   用户变量
-- 声明赋值
SET @用户变量名=SET @用户变量名:=SELECT @用户变量名:=-- 修改变量值
SET @用户变量名=SET @用户变量名:=SELECT @用户变量名:=SELECT 字段 INTO  @用户变量名 FROM 表

   局部变量:只在begin end中有效,并且只能放在第一句话
-- 声明
DECLARE 变量明 类型
-- 赋值
SET @用户变量名=SET @用户变量名:=SELECT @用户变量名:=SELECT 字段 INTO  @用户变量名 FROM-- 使用
set @m=1;
set @n=2;
SET @sum=@n+@m;
SELECT @sum;

存储过程
-- 含义:一组预先编译好的SQL语句集合,批处理语句
-- 创建语法
DELIMITER 结束符
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
	SQL语句
END 结束符 

-- 参数列表:参数模式 参数名 参数类型
-- 参数模式
IN:  入参
OUT: 出参
INOUT:即可做入参,也可做出参
IN num INT(11)
-- 调用语法
call 存储过程名(参数) 结束符
用例
DELIMITER $
CREATE PROCEDURE login(IN  username VARCHAR(20),IN password VARCHAR(20))
BEGIN
	DECLARE result INT DEFAULT 0;
	SELECT COUNT(1) INTO result
	FROM `user`
    WHERE `user`.username = username 
    AND `user`.password = password;

	SELECT IF(result > 0,'成功','账号或密码错误');
END $

CALL login('admin','123') $;
DELIMITER $
CREATE PROCEDURE findRole(IN  userId VARCHAR(20),OUT roleName VARCHAR(20),OUT createId VARCHAR(20))
BEGIN
	SELECT `role`.roleName,role.create_id  INTO roleName,createId 
  FROM `user`
  LEFT JOIN role ON `user`.user_id = role.user_id
	WHERE `user`.user_id = userId;
END $

CALL findRole('1',@roleName,@createId ) $
SELECT @roleName,@createId $
DELIMITER $
CREATE PROCEDURE doubleNum(INOUT a INT,INOUT b INT)
BEGIN
	SET a = a * 2;
	SET b = b * 2;
END $

SET @m=10$;
SET @n=20@@;
CALL doubleNum(@m,@n) $;
SELECT @m,@n$;
-- 删除存储过程,一次只能删一个
DROP PROCEDURE 存储过程名;
-- 查看存储过程信息
SHOW CREATE PROCEDURE 存储过程名;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值