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
.....