小助手科技_小程序定制开发图片

小助手科技_小程序定制开发图片

小助手科技_小程序定制开发图片

小助手科技_小程序定制开发图片

小助手科技_小程序定制开发图片

mysql存储过程调试记实

作者:
来源:
时间: Aug 19, 2020
当前位置:  小助手科技 > 资讯 > mysql存储过程调试记实

在试运行项目中,因某种原因需要增加一个自增长的字段以适应客户方新需求,由于正式环境运维部门不让开发人员直接连数据库进行操作,所有过程均需通过脚本执行。为了完成该字段的新增,徐要首要对新增的自增字段历史记录填充值,故采用存储过程实现。

调试好的存储过程:

DELIMITER $$
DROP PROCEDURE IF EXISTS `T_FILE_AUTO_INCREMENT_ORDER_NO` $$
CREATE PROCEDURE T_FILE_AUTO_INCREMENT_ORDER_NO()


BEGIN
DECLARE  count_row int DEFAULT 1;
 DECLARE  pid_tmp VARCHAR(50);
 DECLARE done INT DEFAULT FALSE;
 DECLARE  cur_record CURSOR FOR  
          select `pid` from `t_file`; 
 
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;


 OPEN cur_record;


 read_loop: LOOP


 FETCH cur_record INTO pid_tmp;


IF done THEN
LEAVE read_loop;
END IF;


      update `t_file` set `t_file`.`order_no` = count_row where `t_file`.`pid` = pid_tmp;
      set count_row = count_row + 1;
END LOOP;
CLOSE  cur_record; 
 


END $$


DELIMITER ;


调整过程中碰到的问题:

1、1054错误:

原代码片段:

DECLARE  count_row int DEFAULT  ‘1’;

修改后代码:


DECLARE  count_row int DEFAULT  1;

错误原因:缺省值类型和变量类型不一致导致;

2、1338错误:

原代码片段:

BEGIN
DECLARE  count_row int DEFAULT 1;
 DECLARE  pid_tmp VARCHAR(50);
 DECLARE done INT DEFAULT FALSE;

 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
 DECLARE  cur_record CURSOR FOR  
          select `pid` from `t_file`; 
修改后代码:

BEGIN
DECLARE  count_row int DEFAULT 1;
 DECLARE  pid_tmp VARCHAR(50);
 DECLARE done INT DEFAULT FALSE;
 DECLARE  cur_record CURSOR FOR  
          select `pid` from `t_file`; 
 
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 错误原因:游标的error handler定义在游标的定义语句之前导致;

3、变量的改值:

mysql和oracle的改值不同,在MySQL中变量的修改需要添加关键字set,如下:

      set count_row = count_row + 1;




上一篇: Linux下wget下载jdk1.8路径

想了解更多?现在就开始免费体验

请您留言
深圳市小助手科技有限公司
0755-82494862
小助手科技_姓名图片
小助手科技_电话图片
小助手科技_邮箱图片
类型咨询类型
小助手科技_类型图片
services@l-helper.com
深圳市福田区泰然八路18号安华工业园6栋705室
QQ交谈 QQ交谈
友情链接:
网站地图
Copyright 2014-2020 深圳市小助手科技有限公司-版权所有
ICP备案号:粤ICP备15072167号-1