我使用的是一个名为salesshort的数据库,主要用于学习MySQL。我正在尝试创建一个存储过程,但由于一些奇怪的原因,当我运行代码时,甚至没有创建存储过程,我认为我的语法是错误的。
这是说明和我的代码。
创建一个返回以下"订单类型"的存储过程"gbSaleP":"我们正在赔钱&";如果每个订单的实际利润(即订单号(-低于或等于零"良好销售";如果潜在利润和实际利润之间的差额为2500美元或更低;和"不良销售;如果潜在利润和实际利润之间的差额大于2500美元。
delimiter //
create procedure gbSaleP ( in orderNumber int(10), out SaleStatus varchar (40))
begin
set gbsaleP = (select sum(o.quantityOrdered*p.MSRP - o.quantityOrdered*p.buyPrice) - abs(sum(o.quantityOrdered*o.priceEach - o.quantityOrdered*p.buyPrice))
from orderdetails as o
join products as p
using(productCode)
group by orderNumber
having porderNumber = orderName);
if gbSaleP <= 2500 then set SalesStatus = "good sale"
elseif gbSaleP => 2500 then set SaleStatus = "bad sale"
else set gbSaleP = "unknown"
end if;
end;
delimiter //
如果您的金额计算脚本是正确的,您可以使用以下脚本。
DELIMITER //
CREATE procedure gbSaleP (IN orderNumber int(10), OUT SaleStatus varchar (40))
BEGIN
DECLARE amount DECIMAL(20,2);
set amount = (/*.......Correct SQL script*/);
if amount <= 2500 then
set SaleStatus = 'good sale';
elseif amount > 2500 then
set SaleStatus = 'bad sale';
else
set SaleStatus = 'unknown';
end if;
END; //
DELIMITER ;
您可以使用进行测试
CALL `gbSaleP` (7, @`SaleStatus`);
SELECT @SaleStatus;