Witam.
Jestem początkujący w pisaniu procedur. Napisałem procedurę która zwraca mi dane na podstawie zakresów dat. Wartości obrotu pokazują jednak zera mimo że prawdziwy obrót jest zdecydowanie wyższy. Nie do końca jednak wiem co zrobiłem źle. Stąd moja prośba o pomoc.
Moja procedura :
create or replace PROCEDURE Marza_II_PROCEDURE(FirstDateOpen DATE,FirstDateClose DATE
,SecondDateOpen DATE ,SecondDateClose DATE
)
as
BEGIN
Begin
EXECUTE IMMEDIATE 'DROP TABLE MARZA_REPORT' ;
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
RAISE;
END IF;
End;
COMMIT;
EXECUTE IMMEDIATE 'CREATE TABLE MARZA_REPORT AS
select BH,ODBIORCA,KANAL_SPRZEDAZY,SEGMENT2018,SEGMENT2019,
SUM(CASE WHEN MIESIAC BETWEEN '|| FirstDateOpen ||' and '||FirstDateClose ||' then OBROT else 0 end) OBROT1,
SUM(CASE WHEN MIESIAC BETWEEN '|| SecondDateOpen ||' and '||SecondDateClose ||' then OBROT else 0 end) OBROT2
from dws1.marza_netto
WHERE MIESIAC >= '|| SecondDateOpen ||'
AND ODBIORCA IN (''0001006834'',''0001024402'',''0001000043'')
GROUP BY BH,ODBIORCA,KANAL_SPRZEDAZY,SEGMENT2018,SEGMENT2019';
END;
Wywołuję to :
Begin
Marza_II_PROCEDURE(to_date('20190101','yyyymmdd'),to_date('20190201','yyyymmdd'),to_date('20180101','yyyymmdd'),to_date('20180201','yyyymmdd'));
End;
Jednak dane które są zwracane do tablicy są błędne.