在SQL组函数中调试存储过程

时间:2018-03-26 13:21:17

标签: mysql sql

[Data set [1] some samples

对于 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 

0 个答案:

没有答案