oracle 我想对给定的订单没有,然后我想显示交付的数量,然后平衡法案

xmd2e60i  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(113)
CREATE OR REPLACE FUNCTION "DELIVERED_QTY" (ordno IN VARCHAR2, itemid IN VARCHAR2)
   RETURN NUMBER
IS
   V  NUMBER (5);
BEGIN
   SELECT SUM (Qty)
     INTO V
     FROM BILLC c, BILLM m
    WHERE     c.BILL_NO_FK = m.BILL_NO
          AND m.ORDER_NO = ORDNO
          AND c.Item_id = ITEMID.

   RETURN V;
END;

有谁能解释一下为什么我们在这个函数中使用2个参数ordno和itemid?

sqxo8psd

sqxo8psd1#

您发布的代码是无效的,该过程甚至不会编译(当然也不会返回任何结果)。语句应以分号而不是点(where子句中的最后一个条件)结束。
除此之外:为什么需要两个参数呢?因为

  • order_no属于billm表,并且
  • item_id属于billc

所以-当你连接它们时,你需要将两个表中的列值与你传递的两个参数相匹配。
因此,函数返回该特定订单的每项数量**。
如果你-正如标题所示-想计算总数量每个订单,那么你不需要itemid参数:

CREATE OR REPLACE FUNCTION "DELIVERED_QTY" (ordno IN VARCHAR2)
   RETURN NUMBER
IS
   V  NUMBER (5);
BEGIN
   SELECT SUM (Qty)
     INTO V
     FROM BILLC c, BILLM m
    WHERE     c.BILL_NO_FK = m.BILL_NO
          AND m.ORDER_NO = ORDNO;

   RETURN V;
END;

相关问题