Mysql 游标在数据库当中引用
时间:2021-07-01 10:21:17
帮助过:9人阅读
DROP PROCEDURE IF EXIEST re_name()
2 CREATE PROCEDURE re_name()
3 begin
4 DECLARE s_did
int(
11);
5 DECLARE s_dname
VARCHAR(
80);
6 DECLARE stop
int DEFAULT 0;
7 -- DECLARE fname VARCHAR(80);
8 DECLARE cur
cursor for select did,dname
from db_fittings
where dQuality
= ‘原厂‘ AND dname
NOT LIKE ‘%原厂%‘ ;
9 declare CONTINUE HANDLER
FOR SQLSTATE
‘02000‘ SET stop
= null;
10 OPEN cur;
11 FETCH cur
INTO s_did,s_dname;
12 WHILE ( stop
is not null ) DO
13 update `db_fittings`
set `dname`
= CONCAT(s_dname,
‘-原厂‘)
WHERE `did`
= s_did;
14 FETCH cur
INTO s_did,s_dname;
15 END WHILE;
16 CLOSE cur;
17 end
以下解释上面代码作为记录:
首行如果存在就删除存储过程re_name();
创建存储过程re_name();
声明局部变量;
声明游标;游标的使用和变量相同需要先声明:DECLARE cur cursor for select did,dname from db_fittings where dQuality = ‘原厂‘ AND dname NOT LIKE ‘%原厂%‘ ;
以下申明在查询出现异常是停止跳出循环:declare CONTINUE HANDLER FOR SQLSTATE ‘02000‘ SET stop = null;
在使用右边之前需要打开游标:open cur
使用FETCH 讲查询出来的结果赋予临时变量:FETCH cur INTO s_did,s_dname
然后再处理使用WHILE DO 循环处理游标查询结果
关闭游标。
结算存储过程。
在书写过程中遇到的问题
原数据库字段长度32 不够长会导致出现 data too long for column ‘dname‘ at row 1 错误,再讲长度32改为60之后程序正常运行,顺利改名
Mysql 游标在数据库当中引用
标签:div 后台 工程师 and 游标 state 存在 引用 结果