I have written a procedure like following
CREATE OR REPLACE PROCEDURE LeaveDates (STDATE IN OUT DATE,
ENDDATE IN OUT DATE)
AS
start_date DATE := STDATE; --to_date('01-JAN-2016','DD-MON-YYYY');
end_date DATE := ENDDATE; --to_date('05-JAN-2016','DD-MON-YYYY');
TYPE dates IS VARRAY (30) OF VARCHAR2 (50);
alldates dates;
BEGIN
LOOP
IF start_date <= end_date
THEN
DBMS_OUTPUT.put_line (start_date);
start_date := start_date + 1;
ELSE
EXIT;
END IF;
END LOOP;
END LeaveDates;
It prints what I need. How do I return the dates which are printed from above procedure.
can i do something like this. But it only prints one time, second print statement not printing anything,
create or replace PROCEDURE LeaveDates2
(
STDATE IN OUT DATE
, ENDDATE IN OUT DATE
, alldate OUT SYS_REFCURSOR
) AS
start_date date := STDATE ;--to_date('01-JAN-2016','DD-MON-YYYY');
end_date date := ENDDATE;--to_date('05-JAN-2016','DD-MON-YYYY');
i number:=1;
TYPE dates IS VARRAY(30) OF varchar2(50);
alldates dates;
Begin
alldates := dates();
alldates.extend(30);
loop
if (start_date <= end_date) then
dbms_output.put_line(start_date);
dbms_output.put_line(alldates(i));
alldates(i):=start_date;
i:=i+1;
start_date := start_date +1;
dbms_output.put_line(alldates(i));
else
exit;
end if;
end loop;
END LeaveDates2;