DELIMITER $$
CREATE PROCEDURE `test`(IN bbyf varchar(8))
BEGIN
declare ksrq varchar(8);
declare jsrq varchar(8);
declare done int default 0;select ksrq=max(fbbrq) from bb_yyrb where left(fbbrq,6)<bbyf;
select jsrq=max(fbbrq) from bb_yyrb where left(fbbrq,6)=bbyf; declare branch_cur cursor
for
select ffzdm,fkhzs,fxhzs,fzjye,fccbzj,fzcze,fljyj,fljjyj,fljks,fljyl from bb_yyrb where fbbrq=jsrq;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
...
...END $$因为declare branch_cur cursor .... 声明在黑体字后面,所以导致一直出错。如何解决???
CREATE PROCEDURE `test`(IN bbyf varchar(8))
BEGIN
declare ksrq varchar(8);
declare jsrq varchar(8);
declare done int default 0;select ksrq=max(fbbrq) from bb_yyrb where left(fbbrq,6)<bbyf;
select jsrq=max(fbbrq) from bb_yyrb where left(fbbrq,6)=bbyf; declare branch_cur cursor
for
select ffzdm,fkhzs,fxhzs,fzjye,fccbzj,fzcze,fljyj,fljjyj,fljks,fljyl from bb_yyrb where fbbrq=jsrq;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
...
...END $$因为declare branch_cur cursor .... 声明在黑体字后面,所以导致一直出错。如何解决???
---------
declare branch_cur cursor
for
select ffzdm,fkhzs,fxhzs,fzjye,fccbzj,fzcze,fljyj,fljjyj,fljks,fljyl from bb_yyrb where fbbrq=jsrq;
---------
这一句好像只与jsrq有关,那么就把两句融合了吧。
DELIMITER $$
CREATE PROCEDURE `test`(IN bbyf varchar(8))
BEGIN
declare ksrq varchar(8);
declare jsrq varchar(8);
declare done int default 0; declare branch_cur cursor
for
select ffzdm,fkhzs,fxhzs,fzjye,fccbzj,fzcze,fljyj,fljjyj,fljks,fljyl from bb_yyrb
where fbbrq in (select jsrq=max(fbbrq) from bb_yyrb where left(fbbrq,6)=bbyf); DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; select ksrq=max(fbbrq) from bb_yyrb where left(fbbrq,6) <bbyf;
...
...
END $$
DELIMITER ;
要是select ksrq=max(fbbrq) from bb_yyrb where left(fbbrq,6) <bbyf;
select jsrq=max(fbbrq) from bb_yyrb where left(fbbrq,6)=bbyf;
的结果都要使用到的话,那么游标的SQL语句将变的非常复杂。而且要是游标中嵌套游标的话,好象没办法实现。
不知道有没有更好的方法?