56,677
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE `jz_contect` (
`ctid` int(10) unsigned NOT NULL auto_increment,
`gbid` int(10) unsigned default NULL,
`tcid` int(10) unsigned default NULL,
`price` float default NULL,
`pricetype` int(11) default NULL,
`jfstdate` timestamp NULL default '0000-00-00 00:00:00',
`fftype` int(11) default NULL,
`contectstart` timestamp NULL default '0000-00-00 00:00:00',
`contectend` timestamp NULL default '0000-00-00 00:00:00',
CREATE TABLE `jz_gbmes` (
`g_id` int(10) unsigned NOT NULL auto_increment,
`remindtype` int(11) default NULL,
`ctid` int(10) unsigned default NULL,
`bstdate` timestamp NULL default CURRENT_TIMESTAMP,
`sdate` timestamp NULL default NULL,
`edate` timestamp NULL default NULL,
`bs_id` int(10) unsigned default NULL,
PRIMARY KEY (`g_id`),
KEY `FK2_jz_gbmes` (`ctid`),
CONSTRAINT `FK2_jz_gbmes` FOREIGN KEY (`ctid`) REFERENCES `jz_contect` (`ctid`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DECLARE gbmes_csr CURSOR FOR SELECT g_id FROM jz_gbmes where ctid = new.ctid;
DECLARE gb_csr CURSOR FOR SELECT a.remindtype,a.sdate,a.edate,a.bstdate,a.g_id,b.contectend,a.org_id from jz_gbmes a where a.ctid = new.ctid;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_gb=1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_gbmes=1;
OPEN gbmes_csr;
REPEAT
FETCH gbmes_csr INTO gg;
SELECT count(*) into tt from jz_stream where g_id = gg and results = 1;
if(tt > 0) then set flag = true;
end if;
UNTIL no_more_gbmes END REPEAT;
CLOSE gbmes_csr;
OPEN gb_csr;
REPEAT
FETCH gb_csr INTO tps,stcaution,endcaution,caution,gid,cend,orgid;
Error Code : 1413
Duplicate handler declared in the same block
DECLARE flag boolean default false;
DECLARE gbmes_csr CURSOR FOR SELECT g_id FROM jz_gbmes where ctid = new.ctid;
DECLARE gb_csr CURSOR FOR SELECT a.remindtype,a.sdate,a.edate,a.bstdate,a.g_id,b.contectend,a.org_id from jz_gbmes a where a.ctid = new.ctid;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_gb=1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_gbmes=1;
select count(*) into s from jz_guestcard where ctid = new.ctid and jfstate = 1;
OPEN gbmes_csr;
REPEAT
FETCH gbmes_csr INTO gg;
SELECT count(*) into tt from jz_stream where g_id = gg and results = 1;
if(tt > 0) then set flag = true;
end if;
UNTIL no_more_gbmes END REPEAT;
CLOSE gbmes_csr;
if(s = 0 || !flag) then
delete from jz_guestcard where ctid = new.ctid;
OPEN gb_csr;
REPEAT
FETCH gb_csr INTO tps,stcaution,endcaution,caution,gid,cend,orgid;
if(tps = 0) then
set ye = Year(caution);
set yue = month(endcaution);
set dd = dayofmonth(endcaution);
set efcd = STR_TO_DATE(concat(ye,'/',yue,'/',dd),'%Y/%m/%d');
set sfcd = STR_TO_DATE(concat(ye,'/',month(stcaution),'/',dayofmonth(stcaution)),'%Y/%m/%d');
if(caution > efcd) then
set sfcd = DATE_ADD(sfcd,interval 1 year);
set efcd = DATE_ADD(efcd,interval 1 year);
end if;
while(sfcd < cend) do
insert into jz_stream(g_id,results,sdate,edate,org_id) values(gid,0,sfcd,efcd,orgid);
set sfcd = DATE_ADD(sfcd,interval 1 year);
set efcd = DATE_ADD(efcd,interval 1 year);
end while;
elseif(tps = 1) then
set ye = Year(caution);
set yue = month(endcaution);
set dd = dayofmonth(endcaution);
set efcd = STR_TO_DATE(concat(ye,'/',yue,'/',dd),'%Y/%m/%d');
set sfcd = STR_TO_DATE(concat(ye,'/',month(stcaution),'/',dayofmonth(stcaution)),'%Y/%m/%d');
while(caution > efcd) do
set sfcd = DATE_ADD(sfcd,interval 3 month);
set efcd = DATE_ADD(efcd,interval 3 month);
end while;
while(sfcd < cend) do
insert into jz_stream(g_id,results,sdate,edate,org_id) values(gid,0,sfcd,efcd,orgid);
set sfcd = DATE_ADD(sfcd,interval 3 month);
set efcd = DATE_ADD(efcd,interval 3 month);
end while;
end if;
UNTIL no_more_gb END REPEAT;
CLOSE gb_csr;