2016-07-10 2 views
0
FROM apps.ap_suppliers aps   , 
    apps.ap_invoices_all ai    , 
    apps.ap_invoice_lines_all ail  , 
    apps.ap_invoice_distributions_all aid, 
    apps.AP_DISTRIBUTION_SETS_all ads , 
    apps.gl_code_combinations_kfv gcc , 
    apps.ap_checks_all aca    , 
    apps.ap_invoice_payments_all aipa , 
    apps.FND_TERRITORIES_TL ft 
    WHERE aps.vendor_id   = ai.vendor_id 
AND ai.invoice_id    = ail.invoice_id 
AND ai.invoice_id    = aid.invoice_id 
AND ail.invoice_id    = aid.invoice_id 
AND ai.DISTRIBUTION_SET_ID  = ads.DISTRIBUTION_SET_ID(+) 
AND aid.dist_code_combination_id = gcc.code_combination_id 
AND aca.check_id     = aipa.check_id 
AND aipa.invoice_id    = ai.invoice_id 
AND aca.vendor_id    = aps.vendor_id 
AND aca.vendor_id    = ai.vendor_id 
AND aca.COUNTRY     = ft.TERRITORY_CODE 
AND ai.invoice_id =nvl(p_invoice_id,ai.invoice_id) 
AND ai.last_update_date BETWEEN NVL(p_from_date,ai.last_update_date) 
AND NVL(p_to_date,sysdate+1); 

last_update_date das Datum, die wie 11-JUN-16, so den gleiche ist vorbei. Die Abfrage ist auf der Datumsparameterebene fehlgeschlagen (Datentypen sind p_from_date Datum, p_to_date Datum). Abfrage gibt kein Ergebnis zurückAbfrage wird bei Datumsparameter andernfalls

+0

Unrelated, aber: Sie sollten aufhören, die alte, veraltete und zerbrechlich implizite schließt sich in der 'where'-Klausel. Und verwenden Sie einen expliziten "JOIN" -Operator - speziell für äußere Joins. Sogar Oracle empfiehlt dies (für äußere Joins) –

Antwort

0

last_update_date ist ein Datum. Die Daten werden nicht als 11-JUN-16 gehalten, es wird als ein Datum gehalten. Wenn Sie eine Zeichenfolge wie '11 -JUN-16 'übergeben, die gut als 11/06/0016 interpretiert werden könnte. Sie haben keine Rechnungen, die alt sind, und das ist möglicherweise der Grund, warum Ihre Abfrage keine Daten zurückgibt.

Immer Geben Sie das Format an, wenn Zeichenfolgen in Daten konvertiert werden. Und warum nicht immer ein vierstelliges Jahr verwenden, um Zweideutigkeiten zu vermeiden. Und schließlich einen numerischen Monat verwenden - auf diese Weise die Sprache ist kein Problem:

TO_DATE('11/06/2016','DD/MM/YYYY')