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