DBA Data[Home] [Help]

PROCEDURE: SYS.DBMS_FEATURE_GATEWAYS

Source


1 PROCEDURE DBMS_FEATURE_GATEWAYS
2     ( feature_boolean OUT NUMBER,
3       aux_count        OUT NUMBER,
4       feature_info    OUT CLOB )
5 AS
6   TYPE GtwCursorRef is REF CURSOR;
7   TYPE ResultList   is TABLE of varchar(150);
8   cur GtwCursorRef;
9   res ResultList;
10   hs_sql varchar(250);
11   i number;
12 BEGIN
13  /*
14  We are using "execute immediate" to query HS tables
15  because they are not present at the moment this
16  stored procedure is created.
17  */
18 
19   hs_sql := 'select count(*)  ' ||
20             '  from   HS_FDS_CLASS '        ||
21             '  where fds_class_name <> ''BITE''';
22   execute immediate hs_sql into aux_count;
23 
24   feature_boolean := aux_count;
25 
26   if aux_count = 0
27   then
28     feature_info := 'This feature is not used.';
29 
30     return;
31   end if;
32 
33   feature_info := 'Num of FDS classes:' || aux_count;
34 
35   open cur for 'select ''(ID:''  || FDS_CLASS_ID || ''' ||
36                ',NAME:'' || FDS_CLASS_NAME || '',' ||
37                'COMMENTS:'' || substr(FDS_CLASS_COMMENTS, 1, 110) || '')''' ||
38                ' from HS_FDS_CLASS where FDS_CLASS_NAME <> ''BITE''';
39   fetch cur bulk collect into res;
40   close cur;
41 
42   for i in res.FIRST .. res.LAST loop
43     feature_info := feature_info || ',' || res(i);
44     /* make sure we don't reach the 1000 chars limit */
45     if LENGTH(feature_info) > 850
46     then
47       feature_info := feature_info || '...';
48       return;
49     end if;
50   end loop;
51 
52   hs_sql := 'select count(*)  ' ||
53             '  from   HS_FDS_INST '        ||
54             '  where fds_class_name <> ''BITE''';
55   execute immediate hs_sql into i;
56 
57   feature_info := feature_info || ',Num of FDS instances:' || i;
58 
59   if i > 0 then
60     open cur for 'select ''(CLASS:''  || FDS_CLASS_ID || '',ID:'' || ' ||
61                  'FDS_INST_ID || '',NAME:'' || FDS_INST_NAME || ' ||
62                  ''',COMMENTS:'' || substr(FDS_INST_COMMENTS, 1, 110)' ||
63                  ' || '')'' from HS_FDS_INST where FDS_CLASS_NAME <> ''BITE''';
64     fetch cur bulk collect into res;
65     close cur;
66 
67     for i in res.FIRST .. res.LAST loop
68       feature_info := feature_info || ',' || res(i);
69       /* make sure we don't reach the 1000 chars limit */
70       if LENGTH(feature_info) > 850
71       then
72         feature_info := feature_info || '...';
73         return;
74       end if;
75     end loop;
76   end if;
77 END;