繁体   English   中英

创建存储过程和连接表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM