最新消息: 新版网站上线了!!!

mysql存储过程(自定义函数之)declare continue handler for sqlstate '02000' set

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s=1; #当fetch游标到了数据库表格最后一行的时候,设置s=1


02000 主要代表的意思可以理解为:

发生下述异常之一:

SELECT INTO 语句或 INSERT 语句的子查询的结果为空表。

在搜索的 UPDATE 或 DELETE 语句内标识的行数为零。

在 FETCH 语句中引用的游标位置处于结果表最后一行之后。

就是说你定义了,当fetch游标到了数据库表格最后一行的时候,设置s=1


create function project() returns VARCHAR(300)
begin
DECLARE proName VARCHAR(300);
DECLARE proNo VARCHAR(50);
DECLARE s int DEFAULT 0; #定义变量s
 DECLARE ProjCRowCur CURSOR FOR select _name,_no from techmanage.tech_project;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s=1; #当fetch游标到了数据库表格最后一行的时候,设置s=1
DECLARE pid int; 
 OPEN ProjCRowCur;
 SET proName='';
 SET proNo='';
 FETCH ProjCRowCur INTO proName,proNo;
while s<>1 DO
select id INTO pid from techmanage.nodes_hierarchy where name = proName;
insert into smart_quality.nodes_hierarchy (name) values (proName);
FETCH ProjCRowCur INTO proName,proNo;
END WHILE;
CLOSE ProjCRowCur;
return proName;
end


.....

转载请注明:谷谷点程序 » mysql存储过程(自定义函数之)declare continue handler for sqlstate '02000' set