DBA Data[Home] [Help]

PACKAGE BODY: APPS.BSC_SYS_DIMTABLES_PKG

Source


1 PACKAGE BODY BSC_SYS_DIMTABLES_PKG as
2 /* $Header: BSCSDIMB.pls 115.2 2003/01/14 22:50:48 meastmon ship $ */
3 
4 
5 PROCEDURE ADD_LANGUAGE
6 IS
7     h_sql VARCHAR2(32000);
8 
9     CURSOR c_dim_tables IS
10         SELECT level_table_name
11         FROM bsc_sys_dim_levels_b
12         WHERE nvl(edw_flag, 0) = 0 AND
13               nvl(source, 'BSC') = 'BSC';
14 
15    h_dim_table VARCHAR2(30);
16 
17    CURSOR c_columns IS
18        SELECT column_name
19        FROM all_tab_columns
20        WHERE table_name = UPPER(h_dim_table) AND
21              owner = UPPER(BSC_APPS.BSC_APPS_SCHEMA);
22 
23    h_column_name VARCHAR2(30);
24    h_lst_insert VARCHAR2(32000);
25    h_lst_select VARCHAR2(32000);
26 
27 BEGIN
28     -- Initialize BSC/APPS global variables
29     BSC_APPS.Init_Bsc_Apps;
30 
31     -- Add language in each dimension table
32     OPEN c_dim_tables;
33     FETCH c_dim_tables INTO h_dim_table;
34     WHILE c_dim_tables%FOUND LOOP
35         h_sql := 'UPDATE '||h_dim_table||' T'||
36                  ' SET NAME = ('||
37                  '   SELECT B.NAME'||
38                  '   FROM '||h_dim_table||' B'||
39                  '   WHERE B.CODE = T.CODE AND'||
40                  '         B.LANGUAGE = T.SOURCE_LANG'||
41                  ' )'||
42                  ' WHERE (T.CODE, T.LANGUAGE) IN ('||
43                  '   SELECT SUBT.CODE, SUBT.LANGUAGE'||
44                  '   FROM '||h_dim_table||' SUBB, '||h_dim_table||' SUBT'||
45                  '   WHERE SUBB.CODE = SUBT.CODE AND'||
46                  '         SUBB.LANGUAGE = SUBT.SOURCE_LANG AND'||
47                  '         SUBB.NAME <> SUBT.NAME'||
48                  '   )';
49         EXECUTE IMMEDIATE h_sql;
50 
51         h_lst_insert := NULL;
52         h_lst_select := NULL;
53 
54         OPEN c_columns;
55         FETCH c_columns INTO h_column_name;
56         WHILE c_columns%FOUND LOOP
57             IF h_lst_insert IS NOT NULL THEN
58                 h_lst_insert := h_lst_insert||', ';
59                 h_lst_select := h_lst_select||', ';
60             END IF;
61 
62             h_lst_insert := h_lst_insert||h_column_name;
63 
64             IF h_column_name = 'LANGUAGE' THEN
65                 h_lst_select := h_lst_select||'L.LANGUAGE_CODE';
66             ELSE
67                 h_lst_select := h_lst_select||'B.'||h_column_name;
68             END IF;
69 
70             FETCH c_columns INTO h_column_name;
71         END LOOP;
72         CLOSE c_columns;
73 
74         h_sql := 'INSERT INTO '||h_dim_table||' ('||h_lst_insert||')'||
75                  ' SELECT '||h_lst_select||
76                  ' FROM '||h_dim_table||' B, FND_LANGUAGES L'||
77                  ' WHERE L.INSTALLED_FLAG IN (''I'', ''B'') AND'||
78                  '       B.LANGUAGE = USERENV(''LANG'') AND'||
79                  '       NOT EXISTS ('||
80                  '         SELECT NULL'||
81                  '         FROM '||h_dim_table||' T'||
82                  '         WHERE T.CODE = B.CODE AND'||
83                  '               T.LANGUAGE = L.LANGUAGE_CODE'||
84                  '       )';
85         EXECUTE IMMEDIATE h_sql;
86 
87         FETCH c_dim_tables INTO h_dim_table;
88     END LOOP;
89     CLOSE c_dim_tables;
90 
91 END ADD_LANGUAGE;
92 
93 
94 END BSC_SYS_DIMTABLES_PKG;