大佬们,我这个sql应该怎么改啊,mysql能晒出来,report报错

delimiter //                           
drop procedure if exists age_limit;    
create procedure age_limit()            
begin
    declare i int; 
  declare x int;
    set i = 0; 
  set x = 0;
    while i <= 20 do                  
        set i = i + 5; 
    SELECT COUNT(*) INTO x
    FROM se_ft_basic AS b INNER JOIN se_dt_sbzl_dl AS d INNER JOIN se_dt_xzqh_cmn AS c
    ON b.equupscode=d.equupscode AND b.dm_ds=c.DM_DS AND b.dm_qx=c.DM_QX
    WHERE IF("设备所在地州市"='',1,b.dm_ds=(SELECT DM_DS FROM se_dt_xzqh_cmn WHERE MC="设备所在地州市"))
    AND IF("设备所在区县"='',1,b.dm_qx=(SELECT DM_QX FROM se_dt_xzqh_cmn WHERE MC="设备所在区县"))
    #AND IF("注册登记日期开始"='',1,b.regdate>'注册登记日期开始' AND b.regdate<'注册登记日期结束')
    AND IF("所属设备大类名称"='',1,b.equupscode=(SELECT equupscode FROM se_dt_sbzl_dl WHERE equipname="所属设备大类名称"))
    AND TIMESTAMPDIFF(YEAR,b.regdate,DATE_FORMAT(NOW(), '%Y-%m-%d'))<=i
    GROUP BY b.equupscode;
        insert into age_limit (number) values (x);
    end while;                       
    select * from age_limit;              
end
//                                     
UPDATE age_limit SET number=0;
call age_limit();

zjp1300160 发布于 2019-11-13 10:57
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
zjp1300160Lv2见习互助
发布于2019-11-13 12:06

...........换成存储过程就行了

最佳回答
0
浪兔Lv7初级互助
发布于2019-11-13 11:01

应该是报没有返回结果集的错误把。


你在report的数据集里面

call这个存储过程前面


加上 SET NOCOUNT ON

试试看

最佳回答
0
hpmpkkLv3中级互助
发布于2019-11-13 11:01

你可以看看日志里面执行的sql语句,我感觉是引号的问题,IF函数里面,第二个值加上引号,里面的引号在用单引号括起来

  • 2关注人数
  • 410浏览人数
  • 最后回答于:2019-11-13 12:06
    请选择关闭问题的原因
    确定 取消
    返回顶部