对于 cname ='Liam',有 3 card_id
即。 87260101,87260153,87501026
我们想知道这个人有多少额外的card_id,意味着我们想要输出= 2 。
对于 cname ='Elizabeth',有2个card_id ie87501022,87501000 我们希望输出1 。
对于只有一个card_id对应空的loss_report_date的其他人,
count(loss_report_date)= 0 ,输出= 0
对于下面的代码,我们得到错误代码= 1111,无效使用组函数,但是当我们单独运行程序时,存储过程不会报告任何错误。
我们使用的DBMS是Innodb。
DELIMITER $$
CREATE PROCEDURE Gettransaction(IN cname varchar(50), OUT cnt int)
BEGIN
#select card_id if there is no old_id, if t1.card_id=t2.old_id then use card_id
DECLARE maxcardid char(8);
DECLARE cnt int default 1;
DECLARE nextMax int;
set maxcardid = (select max(card_id) from card
group by cname);
WHILE cname in (select cname from card where count(loss_report_date)>=1)
DO
set nextMax = (select max(card_id)
from card
where card_id < maxcardid);
set cnt = cnt + 1;
set maxcardid = nextMax;
END WHILE;
END$$
DELIMITER ;
call Gettransaction('Liam', @output);
select @output