[Home] [Help]
PACKAGE BODY: APPS.CZMLS
Source
1 package body czmls as
2 /* $Header: czmlsb.pls 115.11 2002/11/27 17:05:53 askhacha ship $ */
3
4 current_client_charset varchar2 (100);
5
6 -- CONSTANTS FOR WINDOWS CHARACTER SETS
7
8 cs_ascii constant number := 0;
9 cs_windows_japan constant number := to_number ('03A4', 'XXXXXX'); -- 932
10 cs_windows_korea constant number := to_number ('03B5', 'XXXXXX'); -- 949
11 cs_windows_taiwan constant number := to_number ('03B6', 'XXXXXX'); -- 950
12 cs_windows_unicode constant number := to_number ('04B0', 'XXXXXX'); -- 1200
13 cs_windows_windows_latin_ee constant number := to_number ('04E2', 'XXXXXX'); -- 1250
14
15 cs_windows_windows_cyrillic constant number := to_number ('04E3', 'XXXXXX'); -- 1251
16 cs_windows_windows_multilng_us constant number
17 := to_number ('04E4', 'XXXXXX'); -- 1252
18 cs_windows_greek constant number := to_number ('04E5', 'XXXXXX'); -- 1253
19 cs_windows_turkish constant number := to_number ('04E6', 'XXXXXX'); -- 1254
20
21 cs_windows_hebrew constant number := to_number ('04E7', 'XXXXXX'); -- 1255
22 cs_windows_arabic constant number := to_number ('04E8', 'XXXXXX'); -- 1256
23
24
25
26 -- CONSTANTS FOR WINDOWS LANGUAGE CODES
27
28 l_ascii constant number := to_number ('0400', 'XXXXXX');
29 l_arabic constant number := to_number ('0401', 'XXXXXX'); -- 1025
30 l_bulgarian constant number := to_number ('0402', 'XXXXXX');
31 l_catalan constant number := to_number ('0403', 'XXXXXX');
32 l_traditional_chinese constant number := to_number ('0404', 'XXXXXX');
33 l_czech constant number := to_number ('0405', 'XXXXXX'); -- 932
34 l_danish constant number := to_number ('0406', 'XXXXXX'); -- 932
35 l_german constant number := to_number ('0407', 'XXXXXX'); -- 932
36 l_greek constant number := to_number ('0408', 'XXXXXX'); -- 932
37 l_american constant number := to_number ('0409', 'XXXXXX'); -- 1033
38
39 l_castilian_spanish constant number := to_number ('040A', 'XXXXXX'); -- 932
40 l_finnish constant number := to_number ('040B', 'XXXXXX'); -- 932
41 l_french constant number := to_number ('040C', 'XXXXXX'); -- 932
42 l_hebrew constant number := to_number ('040D', 'XXXXXX'); -- 932
43 l_hungarian constant number := to_number ('040E', 'XXXXXX'); -- 932
44 l_icelandic constant number := to_number ('040F', 'XXXXXX'); -- 932
45 l_italian constant number := to_number ('0410', 'XXXXXX'); -- 932
46 l_japanese constant number := to_number ('0411', 'XXXXXX'); -- 932
47 l_korean constant number := to_number ('0412', 'XXXXXX'); -- 932
48 l_dutch constant number := to_number ('0413', 'XXXXXX'); -- 932
49 l_norwegian_bokmal constant number := to_number ('0414', 'XXXXXX'); -- 932
50 l_polish constant number := to_number ('0415', 'XXXXXX'); -- 932
51 l_brazilian_portuguese constant number := to_number ('0416', 'XXXXXX'); -- 932
52 l_rhaeto_romanic constant number := to_number ('0417', 'XXXXXX'); -- 932
53 l_romanian constant number := to_number ('0418', 'XXXXXX'); -- 932
54 l_russian constant number := to_number ('0419', 'XXXXXX'); -- 932
55 l_croato_serbian_latin constant number := to_number ('041A', 'XXXXXX'); -- 932
56 l_slovak constant number := to_number ('041B', 'XXXXXX'); -- 932
57 l_albanian constant number := to_number ('041C', 'XXXXXX'); -- 932
58 l_swedish constant number := to_number ('041D', 'XXXXXX'); -- 932
59 l_thai constant number := to_number ('041E', 'XXXXXX'); -- 932
60 l_turkish constant number := to_number ('041F', 'XXXXXX'); -- 932
61 l_urdu constant number := to_number ('0420', 'XXXXXX'); -- 932
62
63 l_bahasa constant number := to_number ('0421', 'XXXXXX'); -- 932
64 l_simplified_chinese constant number := to_number ('0804', 'XXXXXX'); -- 932
65 l_swiss_german constant number := to_number ('0807', 'XXXXXX'); -- 932
66 l_english_uk constant number := to_number ('0809', 'XXXXXX'); -- 932
67 l_mexican_spanish constant number := to_number ('080A', 'XXXXXX'); -- 932
68 l_belgian_french constant number := to_number ('080C', 'XXXXXX'); -- 932
69 l_swiss_italian constant number := to_number ('0810', 'XXXXXX'); -- 932
70 l_belgian_dutch constant number := to_number ('0813', 'XXXXXX'); -- 932
71 l_norwegian_nynorsk constant number := to_number ('0814', 'XXXXXX'); -- 932
72 l_portuguese constant number := to_number ('0816', 'XXXXXX'); -- 949
73 l_serbo_croatian_cyrillic constant number := to_number ('081A', 'XXXXXX'); -- 950
74 l_canadian_french constant number := to_number ('0C0C', 'XXXXXX'); -- 1200
75 l_swiss_french constant number := to_number ('100C', 'XXXXXX'); -- 1250
76
77
78 procedure Set_Windows_Client_Info (Code_Page in NUMBER, Language in NUMBER,
79 OracleCharset in OUT NOCOPY VARCHAR2, db_client_language OUT NOCOPY VARCHAR2,
80 db_base_language OUT NOCOPY VARCHAR2, Status OUT NOCOPY NUMBER)
81
82 is
83 temp_charset varchar2 (100);
84 begin
85 Status := -1;
86
87 begin
88 select value into temp_charset from v$nls_valid_values
89 where parameter = 'CHARACTERSET' and value like '%MSWIN' || TO_CHAR (Code_Page);
90 current_client_charset := temp_charset;
91 exception
92 when NO_DATA_FOUND then
93 if code_page = cs_windows_japan then
94 current_client_charset := 'JA16SJIS';
95 elsif code_page = cs_windows_unicode then
96 current_client_charset := 'UTF8';
97 elsif code_page = cs_windows_arabic then
98 current_client_charset := 'AR8MSAWIN';
99 else
100 null; -- should raise an exception...
101 end if;
102
103 end;
104
105 if (language is not null) then
106 Status := check_language (language, db_client_language,db_base_language);
107 end if;
108
109
110 OracleCharset := current_client_charset;
111 end Set_Windows_Client_Info;
112
113 function client_charset return varchar2
114 is
115 begin
116 return current_client_charset;
117 end client_charset;
118
119 function check_language(Language in number, db_client_language OUT NOCOPY VARCHAR2,
120 db_base_language OUT NOCOPY VARCHAR2) return number
121
122 is
123 temp_client_language varchar2(50);
124 lang varchar2(1);
125 temp_tablename varchar2(30);
126 retstatus number := -1;
127 begin
128
129 if (Language = l_ascii) then
130 temp_client_language := 'US';
131 elsif (Language = l_arabic) then
132 temp_client_language := 'AR';
133 elsif (Language = l_bulgarian) then
134 temp_client_language := 'BG';
135 elsif (Language = l_catalan) then
136 temp_client_language := 'CA';
137 elsif (Language = l_traditional_chinese) then
138 temp_client_language := 'ZHT';
139 elsif (Language = l_czech) then
140 temp_client_language := 'CS';
141 elsif (Language = l_danish) then
142 temp_client_language := 'DK';
143 elsif (Language = l_german) then
144 temp_client_language := 'D';
145 elsif (Language = l_greek) then
146 temp_client_language := 'EL';
147 elsif (Language = l_american) then
148 temp_client_language := 'US';
149 elsif (Language = l_castilian_spanish) then
150 temp_client_language := 'E';
151 elsif (Language = l_finnish) then
152 temp_client_language := 'SF';
153 elsif (Language = l_french) then
154 temp_client_language := 'F';
155 elsif (Language = l_hebrew) then
156 temp_client_language := 'IW';
157 elsif (Language = l_hungarian) then
158 temp_client_language := 'HU';
159 elsif (Language = l_icelandic) then
160 temp_client_language := 'IS';
161 elsif (Language = l_italian) then
162 temp_client_language := 'I';
163 elsif (Language = l_japanese) then
164 temp_client_language := 'JA';
165 elsif (Language = l_korean) then
166 temp_client_language := 'KO';
167 elsif (Language = l_dutch) then
168 temp_client_language := 'NL';
169 elsif (Language = l_norwegian_bokmal) then
170 temp_client_language := 'N'; -- ??
171 elsif (Language = l_polish) then
172 temp_client_language := 'PL';
173 elsif (Language = l_brazilian_portuguese) then
174 temp_client_language := 'PTB';
175 elsif (Language = l_rhaeto_romanic) then
176 temp_client_language := ''; -- ??
177 elsif (Language = l_romanian) then
178 temp_client_language := 'RO';
179 elsif (Language = l_russian) then
180 temp_client_language := 'RU';
181 elsif (Language = l_croato_serbian_latin) then
182 temp_client_language := 'HR'; -- ??
183 elsif (Language = l_slovak) then
184 temp_client_language := 'SK';
185 elsif (Language = l_albanian) then
186 temp_client_language := ''; -- ??
187 elsif (Language = l_swedish) then
188 temp_client_language := 'S';
189 elsif (Language = l_thai) then
190 temp_client_language := 'TH';
191 elsif (Language = l_turkish) then
192 temp_client_language := 'TR';
193 elsif (Language = l_urdu) then
194 temp_client_language := ''; -- ??
195 elsif (Language = l_bahasa) then
196 temp_client_language := ''; -- ??
197 elsif (Language = l_simplified_chinese) then
198 temp_client_language := 'ZHS';
199 elsif (Language = l_swiss_german) then
200 temp_client_language := 'D'; -- ??
201 elsif (Language = l_english_uk) then
202 temp_client_language := 'GB';
203 elsif (Language = l_mexican_spanish) then
204 temp_client_language := 'ESA';
205 elsif (Language = l_belgian_french) then
206 temp_client_language := 'F'; -- ??
207 elsif (Language = l_swiss_italian) then
208 temp_client_language := 'I'; -- ??
209 elsif (Language = l_belgian_dutch) then
210 temp_client_language := 'NL'; -- ??
211 elsif (Language = l_norwegian_nynorsk) then
212 temp_client_language := 'N'; -- ??
213 elsif (Language = l_portuguese) then
214 temp_client_language := 'PT';
215 elsif (Language = l_serbo_croatian_cyrillic) then
216 temp_client_language := 'HR'; -- ??
217 elsif (Language = l_canadian_french) then
218 temp_client_language := 'FRC';
219 elsif (Language = l_swiss_french) then
220 temp_client_language := 'F';
221 else
222 temp_client_language := null;
223 end if;
224
225 if (temp_client_language is not null) then
226 select installed_flag, nls_language into lang, db_client_language from fnd_languages
227 where language_code = temp_client_language;
228
229 if (lang = 'B') then
230 retstatus := 0;
231 db_base_language := db_client_language;
232 elsif (lang = 'I') then
233 retstatus := 1;
234 else
235 retstatus := 2;
236 end if;
237
238 if (retstatus > 0) then
239 select nls_language into db_base_language from fnd_languages
240 where installed_flag = 'B';
241 end if;
242 end if;
243
244 return retstatus;
245
246 exception
247 when others then
248 retstatus := -1;
249 return retstatus;
250
251 end check_language;
252
253 procedure Set_Oracle_Charset (to_charset in varchar2)
254 is
255 temp_charset varchar2 (50);
256 begin
257 select value into temp_charset
258 from v$nls_valid_values
259 where parameter = 'CHARACTERSET'
260 and value = to_charset;
261 current_client_charset := temp_charset;
262 end Set_Oracle_Charset;
263
264
265 begin
266 select value into current_client_charset
267
268 from v$nls_parameters
269 where parameter = 'NLS_CHARACTERSET';
270 end czmls;