weixin_39550023 2018-11-20 01:49 采纳率: 0%
浏览 1048

mysql 自定义函数一直报错语法有问题,找不哪里错了,求大神帮忙

函数代码如下:
问题:
1.保存是报错变量申明有问题(其他函数这样申明变量没出过问题),
图片说明

    2. 当把报错的变量申明删掉之后又会,又会报其他语句错误(这语句单独提出来运行是没问题的)
    ![图片说明](https://img-ask.csdn.net/upload/201811/20/1542678225_736322.png)







    我觉应该可能不是那个语句的问题,第一写sql函数的没有定义函数类型,一直报错某个句子语法有问题,当我定义了类函数类型(之前报错这个句子没有做任何修改)之后就没问题










    CREATE DEFINER=`root`@`localhost` FUNCTION `etccalcute`(`date_start` datetime,`date_end` datetime,car_id varchar(7)) RETURNS double
MODIFIES SQL DATA

BEGIN
declare etc_sum double;
declare dis_sum double;
declare detc double(3,2);
declare date_s datetime;
declare date_e datatime;
declare n int;
declare m int;

truncate table etc_base;

insert into etc_base(date_delivery_required,project,distance_real)  select date_delivery_required,project,distance_real from orders 
 where date_delivery_required between date_start and date_end
 and car_number=car_id order by date_delivery_required asc;  

 select count(distinct precject) from etc_base into n;

if(n=1)
    begin
             select max(id) from etc_base into m;

                 select date_delivery_required from etc_base where id=1 into date_s;
                 select date_delivery_required from etc_base where id=m-1 into date_e;

                select sum(consumpation_amount) from etc
                where consumpation_time between date_s and date_e
                and car=car_id into etc_sum;

                select sum(distance_real) from etc_base
                where id between 1 and m-1 into dis_sum;

                set detc=etc_sum/dis_sum;
                RETURN detc;
    end
else
  BEGIN
        RETURN -1   
 END    

END;

  • 写回答

1条回答 默认 最新

  • woshinixiaoge 2018-11-20 02:08
    关注

    存储过程的写法需要按照格式要求,例如if counts=0 THEN
    insert into t_dayreport (relationid,day,mantime1,turnover1,mantime2,turnover2,mantime3,turnover3,insertdate,type,transamt,transamt_count) values(relationid_,day_,0,0.00,0,0.00,0,0.00,cdate,'1',transamt_,czcs_);
    else
    update t_dayreport set transamt=transamt_,transamt_count=czcs_ where relationid=relationid_ and DATE_FORMAT(insertdate, '%Y-%m-%d') = DATE_FORMAT(cdate, '%Y-%m-%d');
    end if;

    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿