LISTING 2
Listing 2
1 PROCEDURE dump_multilevel_array
2 IS
3 l_program_index all_arguments.object_name%TYPE;
4
5 PROCEDURE show_overloadings (
6 programs_in IN programs_t,
7 object_name_in IN all_arguments.object_name%TYPE
8 )
9 IS
10 l_overloading_index PLS_INTEGER;
11
12 PROCEDURE show_parameters (top_level_parms_in IN parameters_t)
13 IS
14 l_parm_sequence PLS_INTEGER;
15
16 PROCEDURE show_breakouts (breakouts_in IN breakouts_t)
17 IS
18 l_breakout_index PLS_INTEGER := breakouts_in.FIRST;
19 BEGIN -- main show_breakouts
20 LOOP
21 EXIT WHEN l_breakout_index IS NULL;
22
23 l_breakout_index := breakouts_in.NEXT (l_breakout_index);
24 END LOOP;
25 END show_breakouts;
26 BEGIN -- main show_parameters
27 l_parm_sequence := top_level_parms_in.FIRST;
28 LOOP
29 EXIT WHEN parm_sequence IS NULL;
30 show_breakouts (
31 top_level_parms_in (l_parm_sequence));
32 l_parm_sequence := top_level_parms_in.NEXT (l_parm_sequence);
33 END LOOP;
34 END show_parameters;
35 BEGIN -- main show_overloadings
36 l_overloading_index := programs_in (object_name_in).FIRST;
37 LOOP
38 EXIT WHEN l_overloading_index IS NULL;
39 show_parameters (
40 programs_in (object_name_in) (l_overloading_index));
41 l_overloading_index :=
42 programs_in (object_name_in).NEXT (l_overloading_index);
43 END LOOP;
44 END show_overloadings;
45 BEGIN -- main dump_multilevel_array
46 l_program_index := l_programs.FIRST;
47 LOOP
48 EXIT WHEN l_program_index IS NULL;
49 show_overloadings (l_programs, l_program_index);
50 l_program_index := l_programs.NEXT (l_program_index);
51 END LOOP;
52 END dump_multilevel_array;
