11create or replace package body ut_metadata as
22
3+ procedure do_resolve(the_owner in out varchar2, the_object in out varchar2, a_procedure_name in out varchar2) is
4+ name varchar2(200);
5+ context integer;
6+ dblink varchar2(200);
7+ part1_type number;
8+ object_number number;
9+ begin
10+ name := form_name(the_owner, the_object, a_procedure_name);
11+
12+ context := 1; --plsql
13+
14+ dbms_utility.name_resolve(name => name
15+ ,context => context
16+ ,schema => the_owner
17+ ,part1 => the_object
18+ ,part2 => a_procedure_name
19+ ,dblink => dblink
20+ ,part1_type => part1_type
21+ ,object_number => object_number);
22+
23+ end do_resolve;
24+
325 function form_name(a_owner_name varchar2, a_object varchar2, a_subprogram varchar2 default null) return varchar2 is
426 name varchar2(200);
527 begin
@@ -24,16 +46,10 @@ create or replace package body ut_metadata as
2446 object_number number;
2547 begin
2648
27- name := form_name(a_owner_name, a_package_name);
49+ schema := a_owner_name;
50+ part1 := a_package_name;
2851
29- dbms_utility.name_resolve(name => name
30- ,context => 1 -- pl/sql
31- ,schema => schema
32- ,part1 => part1
33- ,part2 => part2
34- ,dblink => dblink
35- ,part1_type => part1_type
36- ,object_number => object_number);
52+ do_resolve(schema, part1, part2);
3753
3854 select count(*)
3955 into v_cnt
@@ -59,16 +75,11 @@ create or replace package body ut_metadata as
5975 object_number number;
6076 begin
6177
62- name := form_name(a_owner_name, a_package_name, a_procedure_name);
78+ schema := a_owner_name;
79+ part1 := a_package_name;
80+ part2 := a_procedure_name;
6381
64- dbms_utility.name_resolve(name => name
65- ,context => 1 -- pl/sql
66- ,schema => schema
67- ,part1 => part1
68- ,part2 => part2
69- ,dblink => dblink
70- ,part1_type => part1_type
71- ,object_number => object_number);
82+ do_resolve(schema, part1, part2);
7283
7384 select count(*)
7485 into v_cnt
@@ -81,37 +92,19 @@ create or replace package body ut_metadata as
8192 return v_cnt = 1;
8293 end;
8394
84- function do_resolve(the_owner in varchar2, the_object in varchar2, a_procedurename in varchar2) return boolean is
85- name varchar2(200);
86- context integer;
87- schema varchar2(200);
88- part1 varchar2(200);
89- part2 varchar2(200);
90- dblink varchar2(200);
91- part1_type number;
92- object_number number;
95+ function resolvable(the_owner in varchar2, the_object in varchar2, a_procedurename in varchar2) return boolean is
96+ owner varchar2(200);
97+ object_name varchar2(200);
98+ procedure_name varchar2(200);
9399 begin
94- name := form_name(the_owner, the_object, a_procedurename);
95-
96- context := 1; --plsql
97-
98- begin
99- dbms_utility.name_resolve(name => name
100- ,context => context
101- ,schema => schema
102- ,part1 => part1
103- ,part2 => part2
104- ,dblink => dblink
105- ,part1_type => part1_type
106- ,object_number => object_number);
107- exception
108- when others then
109- --replace with correct exception
110- return false;
111- end;
100+ owner := the_owner;
101+ object_name := the_object;
102+ procedure_name := a_procedurename;
103+ do_resolve(owner, object_name, procedure_name);
112104 return true;
113-
114- end do_resolve;
115-
105+ exception
106+ when others then
107+ return false;
108+ end resolvable;
116109end;
117110/
0 commit comments