正在创建存储过程和连接表



我使用的是一个名为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;

最新更新