函数代码如下:
问题:
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;