我已经为一个问题苦苦挣扎了好几天。我在 Oracle DB (10g) 中有几个表,一个显示按优先级排序的订单列表,另一个显示产品库存。我想要做的是根据优先级将可用产品分配给订单。我的问题是:
- 每个订单将只收到一种产品。如何根据可用的存在只选择可以接收产品的订单?
- 为了使程序更有效率,有没有办法在选择产品时存储库存更改,并在程序结束时应用更新?
这两个表都有数千个项目,所以我认为 PL/SQL 存储过程会更有效。
感谢您的时间和帮助。
PS:这是我的表格的一个例子。
Orders
-------------------------------------------
| ID | Priority | Product
-------------------------------------------
| Order1 | 50 | 1
| Order7 | 48 | 3
| Order3 | 45 | 1
| Order2 | 40 | 1
| Order9 | 30 | 2
| Order4 | 15 | 3
Inventory
-------------------------------------------
| ProductID | Qty
-------------------------------------------
| 1 | 2
| 2 | 4
| 3 | 1
运行存储过程后,我需要得到以下结果并需要更新库存。
-------------------------------------------
| ID | Priority | Product
-------------------------------------------
| Order1 | 50 | 1
| Order7 | 48 | 3
| Order3 | 45 | 1
| Order9 | 30 | 2
Updated Inventory
-------------------------------------------
| ProductID | Qty
-------------------------------------------
| 1 | 0
| 2 | 3
| 3 | 0