【发布时间】:2021-01-28 17:23:49
【问题描述】:
我在执行程序时遇到问题。当我执行我的程序时,它没有返回任何答案。我知道我的程序有问题,但我无法弄清楚,所以请帮助我创建一个新程序。
在展示我的代码之前,让我告诉你我为什么要创建这个过程:
我实际上正在研究我的项目“超市计费管理系统”,我已经在其中创建了一些表,其中一个是 Products 表,我在其中创建了 FINAL_TOTAL 列作为过程,现在我想要计算一个人购买的所有产品价格的总价格的过程。例如,当您去超市或任何购物中心时,在购买了几件商品后,他们会给出账单,并且在账单的下方,有一个您必须支付的最终金额。
因此,出于这个原因,我创建了该程序。如果你知道我的代码有问题,请告诉我!!
代码:
程序
create procedure FINAL_TOTAL(C IN NUMBER, T OUT NUMBER)
IS
BEGIN
UPDATE Products
SET FinalTotal = FinalTotal + Total
WHERE ProdCustId = C;
Commit;
SELECT FinalTotal into T FROM Products WHERE ProdCustId = C;
END;
/
产品表:
create table Products
( ProdId number primary key,
ProdNum number not null unique,
ProdName varchar2(15),
ProdPrice int,
ProdQuantity int,
Total int,
FinalTotal int,
ProdCustId int references Customers,
ProdOrdId int references Orders,
ProdStoreId int references Stores
);
触发器:
CREATE TRIGGER PROD_TOTAL
AFTER INSERT ON Products
BEGIN
UPDATE Products
SET Total = ProdPrice * ProdQuantity;
END;
/
在 Products 表中插入语句:
insert into Products(ProdID,ProdNum,ProdName,ProdPrice,ProdQuantity,ProdCustId,ProdOrdId,ProdStoreId)
values(1,1001,'Syrup',30,2,1,1,1);
程序的执行代码:
variable K number;
SQL> EXECUTE FINAL_TOTAL(1,:K);
PL/SQL procedure successfully completed.
输出:
select * from Products;
PRODID PRODNUM PRODNAME PRODPRICE PRODQUANTITY TOTAL
---------- ---------- --------------- ---------- ------------ ----------
FINALTOTAL PRODCUSTID PRODORDID PRODSTOREID
---------- ---------- ---------- -----------
1 1001 Syrup 30 2 60
1 1 1
SQL> print :K
K
----------
所以,这是我的代码,我不知道我的代码有什么问题,因为我是初学者,我对程序没有太多想法,我必须在我的项目中使用该程序,因为这是强制性的,所以请帮助我解决这个问题!
【问题讨论】: