当我处理函数时,我喜欢先测试一个独立的select语句。我做到了,结果很好。我的问题是当我尝试将其转换为函数时。
这是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 :(得分:1)
如果您使用SELECT INTO选择变量,则需要使用@符号来表示这些变量。很遗憾SQLFiddle目前尚未作出回应,因此我可以验证此建议,但我建议您尝试更改这两行:
select sum(item.retailPrice * orderItem.quantity) into total
...
return total;
对此:
select sum(item.retailPrice * orderItem.quantity) into @total
...
return @total;
祝你好运!