DBA Data[Home] [Help]

PACKAGE BODY: APPS.BSC_PMA_APIS_PUB

Source


1 Package Body BSC_PMA_APIS_PUB AS
2 /* $Header: BSCPMAPB.pls 120.3 2006/01/11 13:26:10 arsantha noship $ */
3 
4 FUNCTION is_recursive(p_dim_short_name VARCHAR2) return boolean is
5 cursor cParent is
6 select dim_level_id, parent_dim_level_id from bsc_sys_dim_level_rels
7 where dim_level_id in(select dim_level_id from bsc_sys_dim_levels_b where short_name=p_dim_short_name);
8 l_dim_level_id number;
9 l_parent_dim_level_id number;
10 BEGIN
11   open cParent;
12   fetch cParent into l_dim_level_id, l_parent_dim_level_id;
13   if (cParent%NOTFOUND) then
14     close cParent;
15     return false;
16   end if;
17   close cParent;
18   if (l_dim_level_id=l_parent_dim_level_id) then
19     return true;
20   end if;
21   return false;
22 END;
23 
24 procedure drop_denorm_table(p_dim_short_name varchar2) is
25 l_denorm_table varchar2(100);
26 begin
27   l_denorm_table := BSC_DBGEN_METADATA_READER.get_denorm_dimension_table(p_dim_short_name);
28   if bsc_dbgen_utils.table_exists(l_denorm_table) then
29     bsc_dbgen_utils.drop_table(l_denorm_table);
30   end if;
31 end;
32 
33 FUNCTION sync_dimension_table(p_dim_short_name VARCHAR2, p_action VARCHAR2, p_error_message OUT NOCOPY VARCHAR2) return BOOLEAN IS
34 BEGIN
35   if (p_action='DROP') then
36     drop_denorm_table(p_dim_short_name);
37   elsif p_action='ALTER' then
38     -- check if a recursive dim has been changed to non-recursive, in this case, drop denorm table
39     if is_recursive(p_dim_short_name)=false then
40       drop_denorm_table(p_dim_short_name);
41     end if;
42   end if;
43   return true;
44   exception when others then
45     p_error_message := sqlerrm;
46     return false;
47 END;
48 
49 PROCEDURE get_summary_object_for_level(
50   p_objective          in number,
51   p_periodicity_id     in number,
52   p_dim_set_id         in number,
53   p_level_pattern      in varchar2,
54   p_option_string      in varchar2,
55   p_table_name        out nocopy varchar2,
56   p_mv_name           out nocopy varchar2,
57   p_data_source       out nocopy varchar2,
58   p_sql_stmt          out nocopy varchar2,
59   p_projection_source out nocopy number,
60   p_projection_data   out nocopy varchar2,
61   p_error_message     out nocopy varchar2
62 ) IS
63 cursor cSummaryInfo IS
64 select table_name, mv_name, data_source, sql_stmt, projection_source, projection_data
65   from bsc_kpi_data_tables
66  where indicator = p_objective
67    and periodicity_id = p_periodicity_id
68    and dim_set_id = p_dim_set_id
69    and level_comb = p_level_pattern;
70 BEGIN
71   open cSummaryInfo;
72   fetch cSummaryInfo into p_table_name, p_mv_name, p_data_source, p_sql_stmt,
73         p_projection_source, p_projection_data;
74   close cSummaryInfo;
75   EXCEPTION WHEN OTHERS THEN
76     p_error_message:= 'Error in get_summary_object_for_level:'||sqlerrm;
77     RAISE;
78 END;
79 
80 END BSC_PMA_APIS_PUB;