mysql 存储过程打印日志_Mysql存储过程学习笔记

一、一个procedure实例

实现循环更新一张表的排序号功能,有多少条数据,就从1排到几。

DROP PROCEDURE IF EXISTS`update_old_sortnumber_procedure`; CREATE DEFINER=`root`@`%` PROCEDURE`update_old_sortnumber_procedure`()BEGIN  DECLAREcountRow INT DEFAULT 0;  DECLAREv_i INT DEFAULT 0;  --查询数据条数,确定循环次数  set@countRow = (select count(*) from test);  --打印日志数据条数  SELECT@countRow;  --循环行更新  WHILEv_i @countRow DO     SET@sqlStmt = CONCAT('UPDATE test SET sort_number=',v_i+1,' WHERE      id IN (SELECT idFROM(select id from test LIMIT ',v_i,',1) aaa)');     PREPAREstmt FROM @sqlStmt;     EXECUTEstmt;     SETv_i := v_i+1;  ENDWHILE;END

二、Mysql中定义存储过程

1.全Sql语句创建

例如执行以上sql即可创建

2.Navicat中创建

第一步,函数右键→ 新建函数

bc283d8c5cd1643c9a5b072586204b88.png

第二步,填写存储过程名字,选择过程,点完成

23f9e4bcf3a4478a770c44627d98f684.png

第三步,定义存储过程

d653b1dd44e9d822f73c418e4ab3d5a8.png

三、Mysql存储过程中输入参数

CREATE DEFINER=`root`@`%` PROCEDURE`test_procedure`(in username varchar(250),in id INT)BEGIN  --打印日志直接用select  SELECT username;  SELECT id;END

运行

537c244809794891e0296543a879bce6.png

输入参数

f2bf4e8a234ef4b5e7d621b5f3f6ae25.png

执行结果

cf4727aa72a1a11038e0fe3250d62cd8.png

总结:

1.     传入参数用 in 变量名 变量类型

2.     使用传入参数直接用参数名

3.     打印日志直接用select

四、Mysql存储过程中自定义变量

CREATE DEFINER=`root`@`%` PROCEDURE`test_procedure`()BEGIN  DECLARE countRow INT DEFAULT 2;  -- 变量赋值  set @countRow := countRow + 1;  SELECT@countRow;END

输出结果

56bcf924823b89a2b7cba099061c8a69.png

五、Mysql存储过程在SQL语句中嵌入参数

-- 循环行更新WHILE v_i @countRow DO  SET@sqlStmt = CONCAT('UPDATE test SET sort_number=',  v_i+1,'WHERE id IN (SELECT id FROM(select id from test LIMIT ',v_i,',1) aaa)');  PREPARE stmt FROM @sqlStmt;  EXECUTE stmt;  SETv_i := v_i+1;END WHILE;

总结:用concat拼接sql,执行语句执行sql

六、Mysql存储过程中查询语句执行结果赋值给变量

方式 1

DECLARE cnt INT DEFAULT 0;select count(*) into cnt from test;select cnt;

方式 2

DECLARE cnt INT DEFAULT 0;set @cnt = (select count(*) from test);select @cnt;

方式3

DECLARE cnt INT DEFAULT 0;select count(*) into @cnt from test;select @cnt;

多个列的情况下似乎只能用 into 方式

elect max(status), avg(status) into @max,@avg from test_tbl;select @max, @avg;

给我留言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值