SQL>
SQL> SET ECHO ON
SQL> SET SERVEROUTPUT ON SIZE 1000000
SQL>
SQL> DECLARE
2
3 current VARCHAR2(9 CHAR);
4 element INTEGER;
5
6 TYPE months_varray IS VARRAY(12) OF STRING(9 CHAR);
7
8 TYPE calendar_table IS TABLE OF VARCHAR2(9 CHAR)INDEX BY VARCHAR2(9 CHAR);
9
10 month MONTHS_VARRAY := months_varray('January','February','March','April','May','June','July','August');
11
12 calendar CALENDAR_TABLE;
13
14 BEGIN
15
16 IF calendar.COUNT = 0 THEN
17
18 FOR i IN month.FIRST..month.LAST LOOP
19
20 calendar(month(i)) := TO_CHAR(i);
21
22 DBMS_OUTPUT.PUT_LINE('Index :'||month(i)||' is '||i);
23
24 END LOOP;
25 FOR i IN 1..calendar.COUNT LOOP
26
27 IF i = 1 THEN
28
29 current := calendar.FIRST;
30
31 element := calendar(current);
32
33 ELSE
34
35 IF calendar.NEXT(current) IS NOT NULL THEN
36
37 current := calendar.NEXT(current);
38
39 element := calendar(current);
40
41 ELSE
42
43 EXIT;
44
45 END IF;
46
47 END IF;
48
49 DBMS_OUTPUT.PUT_LINE('Index :'||current||' is '||element);
50
51 END LOOP;
52
53 END IF;
54
55 END;
56 /
Index :January is 1
Index :February is 2
Index :March is 3
Index :April is 4
Index :May is 5
Index :June is 6
Index :July is 7
Index :August is 8
Index :April is 4
Index :August is 8
Index :February is 2
Index :January is 1
Index :July is 7
Index :June is 6
Index :March is 3
Index :May is 5
PL/SQL procedure successfully completed.
SQL>
|