q=learn/building-code-analysis/p5/2

LISTING 2

  • feed_items
  • block_1
in

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;