Hi,everybody,I am trying to write a calendar with pl/sql and the program output like this
SUN MON TUE WED THU FRI SAT
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
but I don't konw how to start work,can you give me a useful instance?
Thanks.
Hope the following will help you. I have not tested it. please correct the syntax incase of any syntax error.
DECLARE
MYDATE DATETIME;
MYDATEMAX datetime;
I_WEEK_DAY INTEGER; -- VARIES BETWEEN 1 - 7 (SUNDAY - SATURDAY)
C_DATE VARCHAR2;
I_MONTH INTEGER;
I_YEAR INTEGER;
CAL_STR1 VARCHAR2;
CAL_STR2 VARCHAR2;
CAL_STR3 VARCHAR2;
CAL_STR4 VARCHAR2;
CAL_STR5 VARCHAR2;
CAL_STR6 VARCHAR2;
CAL_STR7 VARCHAR2;
CAL_STR1 := 'SUN';
CAL_STR2 := 'MON';
CAL_STR3 := 'TUE';
CAL_STR4 := 'WED';
CAL_STR5 := 'THU';
CAL_STR6 := 'FRI';
CAL_STR7 := 'SAT';
SELECT SYSDATE INTO MYDATE FROM DUAL;
MYDATE := TO_DATE (TO_CHAR(MYDATE,'MM') ||'/01/' || TO_CHAR(MYDATE,'YYYY'), 'MM/DD/YYYY');
MYDATEMAX := TO_DATE (LPAD(TO_CHAR(TO_NUMBER(TO_CHAR(MYDATE,'MM')) + 1),2,'0') ||'01' || TO_CHAR(MYDATE,'/YYYY'), 'MM/DD/YYYY');
WHILE (MYDATE < MYDATEMAX)
LOOP
SELECT TO_NUMBER(TO_CHAR(TO_DATE(MYDATE,'MM/DD/YYYY'),'D')),
TO_CHAR(TO_DATE(MYDATE,'MM/DD/YYYY'),'DD'),
TO_NUMBER(TO_CHAR(TO_DATE(MYDATE,'MM/DD/YYYY'),'MM')),
TO_NUMBER(TO_CHAR(TO_DATE(MYDATE,'MM/DD/YYYY'),'YYYY'))
INTO I_WEEK_DAY, C_DATE, I_MONTH, I_YEAR FROM DUAL;
IF (I_WEEK_DAY = 1) THEN
CAL_STR1 := CAL_STR1 || ' ' || C_DATE;
ELSE IF (I_WEEK_DAY = 2) THEN
CAL_STR2 := CAL_STR2 || ' ' || C_DATE;
ELSE IF (I_WEEK_DAY = 3) THEN
CAL_STR3 := CAL_STR3 || ' ' || C_DATE;
ELSE IF (I_WEEK_DAY = 4) THEN
CAL_STR4 := CAL_STR4 || ' ' || C_DATE;
ELSE IF (I_WEEK_DAY = 5) THEN
CAL_STR5 := CAL_STR5 || ' ' || C_DATE;
ELSE IF (I_WEEK_DAY = 6) THEN
CAL_STR6 := CAL_STR6 || ' ' || C_DATE;
ELSE
CAL_STR7 := CAL_STR7 || ' ' || C_DATE;
END IF;
MYDATE := MYDATE + 1;
END LOOP;
Set the application font to Arial size 10 for proper alignment