繁体   English   中英

为什么此函数总是返回0

[英]Why does this function always return 0

我不知道为什么这个函数总是返回0

CREATE OR REPLACE FUNCTION QTYDEPOT(
    p_org_id     IN NUMBER,
    p_product_id IN NUMBER,
    p_datefrom   IN DATE,
    p_dateto     IN DATE)
  RETURN NUMBER
AS
  qty NUMBER;
BEGIN
  SELECT COALESCE(SUM(C_InvoiceLine.qtyinvoiced), 0)
  INTO qty
  FROM C_InvoiceLine
  INNER JOIN C_invoice
  ON (c_invoiceline.C_INVOICE_ID = c_invoice.C_INVOICE_ID)
  INNER JOIN C_BPartner
  ON (c_invoice.C_BPARTNER_ID   = c_bpartner.C_BPARTNER_ID)
  WHERE C_BPartner.ISSALESREP   = 'N'
  AND C_BPartner.ISEMPLOYEE     = 'N'
  AND c_bpartner.ISCUSTOMER     = 'Y'
  AND c_invoiceline.AD_org_id   = p_org_id
  AND c_invoiceline.m_product_id= p_product_id
  AND c_invoice.DateInvoiced BETWEEN p_datefrom AND p_dateto;
  RETURN qty ;
END;

PS:如果我删除关闭日期部分where

c_invoice.DateInvoiced BETWEEN p_datefrom AND p_dateto;

该函数返回实数值。

我这样称呼它

SELECT  
   ..
   QTYDEPOT( 1000000, p.m_product_id,'7/7/2014','24/7/2014') as qtyDepot

尝试这个:

SELECT  
   ..
   QTYDEPOT( 1000000, p.m_product_id,to_date('7/7/2014','dd/mm/yyyy'),to_date('24/7/2014','dd/mm/yyyy')) as qtyDepot

您必须指定传递给函数的日期格式,

希望这可以帮助!

您在使用DATE时遇到问题。 我建议您尝试像这样调用函数:

SELECT  
   ..
   QTYDEPOT( 1000000, p.m_product_id,DATE('2014-07-07'),DATE('2014-07-24')) as qtyDepot

如您所见,Oracle标准格式为'yyyy-mm-dd'我不知道是否需要DATE(...) ,但是我使用这种方式来操纵DATE :代码更加清晰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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