2016-11-16 36 views
0

当我处理函数时,我首先需要测试独立的select语句。我做到了,它解决了。我的问题是当我尝试将其转换为函数。在mySQL中完成某项功能时遇到问题

这是select语句,它的作品

select sum(item.retailPrice * orderItem.quantity) 
from orderItem 
join orders 
on orders.orderId = orderItem.orderId 
join item 
on item.itemId = orderItem.itemId 
where orders.orderId = 4 

这是我的功能,它提供了错误。

CREATE FUNCTION getTotalPrice(oId int) 
RETURNS int 
READS SQL DATA 
BEGIN 
declare total int; 
select sum(item.retailPrice * orderItem.quantity) into total 
from orderItem 
join orders 
on orders.orderId = orderItem.orderId 
join item 
on item.itemId = orderItem.itemId 
where orders.orderId = oId 
return total; 
END$$ 

该函数应该允许用户输入他们的orderId。

+0

简短的回答是,你真的不应该为这些简单的查询编写函数。 – e4c5

+0

您在“RETURN”上方行末尾缺少分号。 –

回答

1

如果您使用SELECT INTO来选择变量,则需要使用@符号来表示这些变量的前缀。不幸的是SQLFiddle没有响应,所以我现在就可以验证这个建议,但我建议您尝试改变这两条线:

select sum(item.retailPrice * orderItem.quantity) into total 
... 
return total; 

要这样:

select sum(item.retailPrice * orderItem.quantity) into @total 
... 
return @total; 

祝你好运!