У меня есть функция plsql count_order_cust
с тремя параметрами. Но p_start
и p_end
являются необязательными. Если я вызываю функцию с тремя параметрами, то функция выполняется хорошо, но если я вызываю функцию с одним параметром p_id
, то она должна подсчитывать заказы за последний год (то есть 01/янв/2013 - 31/декабрь/2013), и это моя проблема. Как я могу это сделать?Как получить начальную и конечную дату с прошлого года в plsql
Вот функция count_order_cust
:
CREATE OR REPLACE FUNCTION count_order_cust(p_id f_customers.id%TYPE, p_sd f_orders.order_date%TYPE DEFAULT NULL, p_ed f_orders.order_date%TYPE DEFAULT NULL)
RETURN NUMBER IS v_count_orders NUMBER(3) := 0;
BEGIN
SELECT COUNT(cust_id) INTO v_count_orders
FROM f_orders
WHERE cust_id = p_id AND f_orders.order_date BETWEEN p_sd AND p_ed;
RETURN v_count_orders;
EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL;
END count_order_cust;
С этим выберите я получаю дату в прошлом году, но мне нужно иметь в p_sd = '01/Jan/2013' и в p_ed = '31/декабрь/2013 ».
select add_months(sysdate,-12) from dual;