MySQL 关于zero rows fetched, selected, or processed

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET t_error = 1;

//实例如下

DECLARE t_error INTEGER DEFAULT 0;
declare flag int DEFAULT 1;
declare c_switcher varchar(50);
declare c_mac varchar(20);
declare c_port varchar(20);
declare cur_tmp CURSOR for select Switch as switchermac,`Port`,(select `Name` from SwitchBasicInfo where Mac=switchermac) as switcher from VlanBindDefaultSwtich where VlanId=c_vlanid;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET t_error = 1; 
DROP TABLE IF EXISTS tmp_table;
create temporary table tmp_table(
	vlanid int not null,
	switchername1 varchar(50),
	switchmac1 varchar(20),
	port1 varchar(20),
	switchername2 varchar(50),
	switchmac2 varchar(20),
	port2 varchar(20));	
	open cur_tmp;
  FETCH cur_tmp into c_mac,c_port,c_switcher;
	WHILE t_error<>1 DO
	if flag=1 THEN	
		insert into tmp_table(vlanid,switchername1,switchmac1,port1) values(c_vlanid,c_switcher,c_mac,c_port);
		set flag=0;
	else 
		UPDATE tmp_table set switchername2=c_switcher,switchmac2=c_mac,port2=c_port where vlanid=c_vlanid;
	end if;
  FETCH cur_tmp into c_mac,c_port,c_switcher;
  END WHILE;
	close cur_tmp;
	 SELECT * from tmp_table;
END
posted @ 2014-07-24 18:48  xswby  阅读(218)  评论(0)    收藏  举报