[英]Creating Stored Procedures and joining tables
我正在使用一个名为 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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.