[Home] [Help]
PACKAGE BODY: APPS.FND_OBJECTS_PKG
Source
1 package body FND_OBJECTS_PKG as
2 /* $Header: AFSCOBJB.pls 120.2 2005/10/27 18:21:01 tmorrow ship $ */
3
4 procedure INSERT_ROW (
5 X_ROWID in out nocopy VARCHAR2,
6 X_OBJECT_ID in NUMBER,
7 X_OBJ_NAME in VARCHAR2,
8 X_PK1_COLUMN_NAME in VARCHAR2,
9 X_PK2_COLUMN_NAME in VARCHAR2,
10 X_PK3_COLUMN_NAME in VARCHAR2,
11 X_PK4_COLUMN_NAME in VARCHAR2,
12 X_PK5_COLUMN_NAME in VARCHAR2,
13 X_PK1_COLUMN_TYPE in VARCHAR2,
14 X_PK2_COLUMN_TYPE in VARCHAR2,
15 X_PK3_COLUMN_TYPE in VARCHAR2,
16 X_PK4_COLUMN_TYPE in VARCHAR2,
17 X_PK5_COLUMN_TYPE in VARCHAR2,
18 X_APPLICATION_ID in NUMBER,
19 X_DATABASE_OBJECT_NAME in VARCHAR2,
20 X_DISPLAY_NAME in VARCHAR2,
21 X_DESCRIPTION in VARCHAR2,
22 X_CREATION_DATE in DATE,
23 X_CREATED_BY in NUMBER,
24 X_LAST_UPDATE_DATE in DATE,
25 X_LAST_UPDATED_BY in NUMBER,
26 X_LAST_UPDATE_LOGIN in NUMBER
27 ) is
28 cursor C is select ROWID from FND_OBJECTS
29 where OBJECT_ID = X_OBJECT_ID
30 ;
31 begin
32 insert into FND_OBJECTS (
33 PK4_COLUMN_TYPE,
34 PK5_COLUMN_TYPE,
35 PK1_COLUMN_TYPE,
36 PK2_COLUMN_TYPE,
37 PK3_COLUMN_TYPE,
38 OBJECT_ID,
39 OBJ_NAME,
40 APPLICATION_ID,
41 DATABASE_OBJECT_NAME,
42 PK1_COLUMN_NAME,
43 PK2_COLUMN_NAME,
44 PK3_COLUMN_NAME,
45 PK4_COLUMN_NAME,
46 PK5_COLUMN_NAME,
47 CREATION_DATE,
48 CREATED_BY,
49 LAST_UPDATE_DATE,
50 LAST_UPDATED_BY,
51 LAST_UPDATE_LOGIN
52 ) values (
53 X_PK4_COLUMN_TYPE,
54 X_PK5_COLUMN_TYPE,
55 X_PK1_COLUMN_TYPE,
56 X_PK2_COLUMN_TYPE,
57 X_PK3_COLUMN_TYPE,
58 X_OBJECT_ID,
59 X_OBJ_NAME,
60 X_APPLICATION_ID,
61 X_DATABASE_OBJECT_NAME,
62 X_PK1_COLUMN_NAME,
63 X_PK2_COLUMN_NAME,
64 X_PK3_COLUMN_NAME,
65 X_PK4_COLUMN_NAME,
66 X_PK5_COLUMN_NAME,
67 X_CREATION_DATE,
68 X_CREATED_BY,
69 X_LAST_UPDATE_DATE,
70 X_LAST_UPDATED_BY,
71 X_LAST_UPDATE_LOGIN
72 );
73
74 insert into FND_OBJECTS_TL (
75 CREATED_BY,
76 CREATION_DATE,
77 LAST_UPDATED_BY,
78 LAST_UPDATE_DATE,
79 LAST_UPDATE_LOGIN,
80 OBJECT_ID,
81 DISPLAY_NAME,
82 DESCRIPTION,
83 LANGUAGE,
84 SOURCE_LANG
85 ) select
86 X_CREATED_BY,
87 X_CREATION_DATE,
88 X_LAST_UPDATED_BY,
89 X_LAST_UPDATE_DATE,
90 X_LAST_UPDATE_LOGIN,
91 X_OBJECT_ID,
92 X_DISPLAY_NAME,
93 X_DESCRIPTION,
94 L.LANGUAGE_CODE,
95 userenv('LANG')
96 from FND_LANGUAGES L
97 where L.INSTALLED_FLAG in ('I', 'B')
98 and not exists
99 (select NULL
100 from FND_OBJECTS_TL T
101 where T.OBJECT_ID = X_OBJECT_ID
102 and T.LANGUAGE = L.LANGUAGE_CODE);
103
104 open c;
105 fetch c into X_ROWID;
106 if (c%notfound) then
107 close c;
108 raise no_data_found;
109 end if;
110 close c;
111
112 end INSERT_ROW;
113
114 procedure LOCK_ROW (
115 X_OBJECT_ID in NUMBER,
116 X_OBJ_NAME in VARCHAR2,
117 X_PK1_COLUMN_NAME in VARCHAR2,
118 X_PK2_COLUMN_NAME in VARCHAR2,
119 X_PK3_COLUMN_NAME in VARCHAR2,
120 X_PK4_COLUMN_NAME in VARCHAR2,
121 X_PK5_COLUMN_NAME in VARCHAR2,
122 X_PK1_COLUMN_TYPE in VARCHAR2,
123 X_PK2_COLUMN_TYPE in VARCHAR2,
124 X_PK3_COLUMN_TYPE in VARCHAR2,
125 X_PK4_COLUMN_TYPE in VARCHAR2,
126 X_PK5_COLUMN_TYPE in VARCHAR2,
127 X_APPLICATION_ID in NUMBER,
128 X_DATABASE_OBJECT_NAME in VARCHAR2,
129 X_DISPLAY_NAME in VARCHAR2,
130 X_DESCRIPTION in VARCHAR2
131 ) is
132 cursor c is select
133 PK4_COLUMN_TYPE,
134 PK5_COLUMN_TYPE,
135 PK1_COLUMN_TYPE,
136 PK2_COLUMN_TYPE,
137 PK3_COLUMN_TYPE,
138 OBJ_NAME,
139 APPLICATION_ID,
140 DATABASE_OBJECT_NAME,
141 PK1_COLUMN_NAME,
142 PK2_COLUMN_NAME,
143 PK3_COLUMN_NAME,
144 PK4_COLUMN_NAME,
145 PK5_COLUMN_NAME
146 from FND_OBJECTS
147 where OBJECT_ID = X_OBJECT_ID
148 for update of OBJECT_ID nowait;
149 recinfo c%rowtype;
150
151 cursor c1 is select
152 DISPLAY_NAME,
153 DESCRIPTION,
154 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
155 from FND_OBJECTS_TL
156 where OBJECT_ID = X_OBJECT_ID
157 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
158 for update of OBJECT_ID nowait;
159 begin
160 open c;
161 fetch c into recinfo;
162 if (c%notfound) then
163 close c;
164 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
165 app_exception.raise_exception;
166 end if;
167 close c;
168 if ( ((recinfo.PK4_COLUMN_TYPE = X_PK4_COLUMN_TYPE) OR
169 ((recinfo.PK4_COLUMN_TYPE IS NULL) AND (X_PK4_COLUMN_TYPE IS NULL)))
170 AND ((recinfo.PK5_COLUMN_TYPE = X_PK5_COLUMN_TYPE) OR
171 ((recinfo.PK5_COLUMN_TYPE IS NULL) AND (X_PK5_COLUMN_TYPE IS NULL)))
172 AND (recinfo.PK1_COLUMN_TYPE = X_PK1_COLUMN_TYPE)
173 AND ((recinfo.PK2_COLUMN_TYPE = X_PK2_COLUMN_TYPE) OR
174 ((recinfo.PK2_COLUMN_TYPE IS NULL) AND (X_PK2_COLUMN_TYPE IS NULL)))
175 AND ((recinfo.PK3_COLUMN_TYPE = X_PK3_COLUMN_TYPE) OR
176 ((recinfo.PK3_COLUMN_TYPE IS NULL) AND (X_PK3_COLUMN_TYPE IS NULL)))
177 AND (recinfo.OBJ_NAME = X_OBJ_NAME)
178 AND (recinfo.APPLICATION_ID = X_APPLICATION_ID)
179 AND (recinfo.DATABASE_OBJECT_NAME = X_DATABASE_OBJECT_NAME)
180 AND (recinfo.PK1_COLUMN_NAME = X_PK1_COLUMN_NAME)
181 AND ((recinfo.PK2_COLUMN_NAME = X_PK2_COLUMN_NAME) OR
182 ((recinfo.PK2_COLUMN_NAME IS NULL) AND (X_PK2_COLUMN_NAME IS NULL)))
183 AND ((recinfo.PK3_COLUMN_NAME = X_PK3_COLUMN_NAME) OR
184 ((recinfo.PK3_COLUMN_NAME IS NULL) AND (X_PK3_COLUMN_NAME IS NULL)))
185 AND ((recinfo.PK4_COLUMN_NAME = X_PK4_COLUMN_NAME) OR
186 ((recinfo.PK4_COLUMN_NAME IS NULL) AND (X_PK4_COLUMN_NAME IS NULL)))
187 AND ((recinfo.PK5_COLUMN_NAME = X_PK5_COLUMN_NAME) OR
188 ((recinfo.PK5_COLUMN_NAME IS NULL) AND (X_PK5_COLUMN_NAME IS NULL)))
189 ) then
190 null;
191 else
192 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
193 app_exception.raise_exception;
194 end if;
195
196 for tlinfo in c1 loop
197 if (tlinfo.BASELANG = 'Y') then
198 if ( (tlinfo.DISPLAY_NAME = X_DISPLAY_NAME)
199 AND (tlinfo.DESCRIPTION = X_DESCRIPTION)
200 ) then
201 null;
202 else
203 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
204 app_exception.raise_exception;
205 end if;
206 end if;
207 end loop;
208 return;
209 end LOCK_ROW;
210
211 procedure UPDATE_ROW (
212 X_OBJECT_ID in NUMBER,
213 X_OBJ_NAME in VARCHAR2,
214 X_PK1_COLUMN_NAME in VARCHAR2,
215 X_PK2_COLUMN_NAME in VARCHAR2,
216 X_PK3_COLUMN_NAME in VARCHAR2,
217 X_PK4_COLUMN_NAME in VARCHAR2,
218 X_PK5_COLUMN_NAME in VARCHAR2,
219 X_PK1_COLUMN_TYPE in VARCHAR2,
220 X_PK2_COLUMN_TYPE in VARCHAR2,
221 X_PK3_COLUMN_TYPE in VARCHAR2,
222 X_PK4_COLUMN_TYPE in VARCHAR2,
223 X_PK5_COLUMN_TYPE in VARCHAR2,
224 X_APPLICATION_ID in NUMBER,
225 X_DATABASE_OBJECT_NAME in VARCHAR2,
226 X_DISPLAY_NAME in VARCHAR2,
227 X_DESCRIPTION in VARCHAR2,
228 X_LAST_UPDATE_DATE in DATE,
229 X_LAST_UPDATED_BY in NUMBER,
230 X_LAST_UPDATE_LOGIN in NUMBER
231 ) is
232 begin
233 update FND_OBJECTS set
234 PK4_COLUMN_TYPE = X_PK4_COLUMN_TYPE,
235 PK5_COLUMN_TYPE = X_PK5_COLUMN_TYPE,
236 PK1_COLUMN_TYPE = X_PK1_COLUMN_TYPE,
237 PK2_COLUMN_TYPE = X_PK2_COLUMN_TYPE,
238 PK3_COLUMN_TYPE = X_PK3_COLUMN_TYPE,
239 APPLICATION_ID = X_APPLICATION_ID,
240 DATABASE_OBJECT_NAME = X_DATABASE_OBJECT_NAME,
241 PK1_COLUMN_NAME = X_PK1_COLUMN_NAME,
242 PK2_COLUMN_NAME = X_PK2_COLUMN_NAME,
243 PK3_COLUMN_NAME = X_PK3_COLUMN_NAME,
244 PK4_COLUMN_NAME = X_PK4_COLUMN_NAME,
245 PK5_COLUMN_NAME = X_PK5_COLUMN_NAME,
246 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
247 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
248 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
249 where OBJECT_ID = X_OBJECT_ID;
250
251 if (sql%notfound) then
252 raise no_data_found;
253 end if;
254
255 update FND_OBJECTS_TL set
256 DISPLAY_NAME = X_DISPLAY_NAME,
257 DESCRIPTION = X_DESCRIPTION,
258 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
259 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
260 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
261 SOURCE_LANG = userenv('LANG')
262 where OBJECT_ID = X_OBJECT_ID
263 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
264
265 if (sql%notfound) then
266 raise no_data_found;
267 end if;
268 end UPDATE_ROW;
269
270 /* Overloaded version below */
271 procedure LOAD_ROW (
272 X_OBJ_NAME in VARCHAR2,
273 X_OWNER in VARCHAR2,
274 X_PK1_COLUMN_NAME in VARCHAR2,
275 X_PK2_COLUMN_NAME in VARCHAR2,
276 X_PK3_COLUMN_NAME in VARCHAR2,
277 X_PK4_COLUMN_NAME in VARCHAR2,
278 X_PK5_COLUMN_NAME in VARCHAR2,
279 X_PK1_COLUMN_TYPE in VARCHAR2,
280 X_PK2_COLUMN_TYPE in VARCHAR2,
281 X_PK3_COLUMN_TYPE in VARCHAR2,
282 X_PK4_COLUMN_TYPE in VARCHAR2,
283 X_PK5_COLUMN_TYPE in VARCHAR2,
284 X_APPLICATION_SHORT_NAME in VARCHAR2,
285 X_DATABASE_OBJECT_NAME in VARCHAR2,
286 X_DISPLAY_NAME in VARCHAR2,
287 X_DESCRIPTION in VARCHAR2,
288 X_CUSTOM_MODE in VARCHAR2
289 ) is
290 begin
291 fnd_objects_pkg.LOAD_ROW (
292 X_OBJ_NAME => X_OBJ_NAME,
293 X_OWNER => X_OWNER,
294 X_PK1_COLUMN_NAME => X_PK1_COLUMN_NAME,
295 X_PK2_COLUMN_NAME => X_PK2_COLUMN_NAME,
296 X_PK3_COLUMN_NAME => X_PK3_COLUMN_NAME,
297 X_PK4_COLUMN_NAME => X_PK4_COLUMN_NAME,
298 X_PK5_COLUMN_NAME => X_PK5_COLUMN_NAME,
299 X_PK1_COLUMN_TYPE => X_PK1_COLUMN_TYPE,
300 X_PK2_COLUMN_TYPE => X_PK2_COLUMN_TYPE,
301 X_PK3_COLUMN_TYPE => X_PK3_COLUMN_TYPE,
302 X_PK4_COLUMN_TYPE => X_PK4_COLUMN_TYPE,
303 X_PK5_COLUMN_TYPE => X_PK5_COLUMN_TYPE,
304 X_APPLICATION_SHORT_NAME => X_APPLICATION_SHORT_NAME,
305 X_DATABASE_OBJECT_NAME => X_DATABASE_OBJECT_NAME,
306 X_DISPLAY_NAME => X_DISPLAY_NAME,
307 X_DESCRIPTION => X_DESCRIPTION,
308 X_CUSTOM_MODE => X_CUSTOM_MODE,
309 X_LAST_UPDATE_DATE => null
310 );
311 end LOAD_ROW;
312
313 /* Overloaded version above */
314 procedure LOAD_ROW (
315 X_OBJ_NAME in VARCHAR2,
316 X_OWNER in VARCHAR2,
317 X_PK1_COLUMN_NAME in VARCHAR2,
318 X_PK2_COLUMN_NAME in VARCHAR2,
319 X_PK3_COLUMN_NAME in VARCHAR2,
320 X_PK4_COLUMN_NAME in VARCHAR2,
321 X_PK5_COLUMN_NAME in VARCHAR2,
322 X_PK1_COLUMN_TYPE in VARCHAR2,
323 X_PK2_COLUMN_TYPE in VARCHAR2,
324 X_PK3_COLUMN_TYPE in VARCHAR2,
325 X_PK4_COLUMN_TYPE in VARCHAR2,
326 X_PK5_COLUMN_TYPE in VARCHAR2,
327 X_APPLICATION_SHORT_NAME in VARCHAR2,
328 X_DATABASE_OBJECT_NAME in VARCHAR2,
329 X_DISPLAY_NAME in VARCHAR2,
330 X_DESCRIPTION in VARCHAR2,
331 X_CUSTOM_MODE in VARCHAR2,
332 X_LAST_UPDATE_DATE in VARCHAR2
333 ) is
334 app_id number;
335 obj_id number;
336 row_id varchar2(64);
337 f_luby number; -- entity owner in file
338 f_ludate date; -- entity update date in file
339 db_luby number; -- entity owner in db
340 db_ludate date; -- entity update date in db
341 begin
342 -- Translate owner to file_last_updated_by
343 f_luby := fnd_load_util.owner_id(x_owner);
344
345 -- Translate char last_update_date to date
346 f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
347
348 select application_id into app_id
349 from fnd_application
350 where application_short_name = X_APPLICATION_SHORT_NAME;
351
352 select object_id, last_updated_by, last_update_date
353 into obj_id, db_luby, db_ludate
354 from fnd_objects
355 where obj_name = X_OBJ_NAME;
356
357 if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
358 db_ludate, X_CUSTOM_MODE)) then
359 fnd_objects_pkg.UPDATE_ROW (
360 X_OBJECT_ID => obj_id,
361 X_OBJ_NAME => X_OBJ_NAME,
362 X_PK1_COLUMN_NAME => X_PK1_COLUMN_NAME,
363 X_PK2_COLUMN_NAME => X_PK2_COLUMN_NAME,
364 X_PK3_COLUMN_NAME => X_PK3_COLUMN_NAME,
365 X_PK4_COLUMN_NAME => X_PK4_COLUMN_NAME,
366 X_PK5_COLUMN_NAME => X_PK5_COLUMN_NAME,
367 X_PK1_COLUMN_TYPE => X_PK1_COLUMN_TYPE,
368 X_PK2_COLUMN_TYPE => X_PK2_COLUMN_TYPE,
369 X_PK3_COLUMN_TYPE => X_PK3_COLUMN_TYPE,
370 X_PK4_COLUMN_TYPE => X_PK4_COLUMN_TYPE,
371 X_PK5_COLUMN_TYPE => X_PK5_COLUMN_TYPE,
372 X_APPLICATION_ID => app_id,
373 X_DATABASE_OBJECT_NAME => X_DATABASE_OBJECT_NAME,
374 X_DISPLAY_NAME => X_DISPLAY_NAME,
375 X_DESCRIPTION => X_DESCRIPTION,
376 X_LAST_UPDATE_DATE => f_ludate,
377 X_LAST_UPDATED_BY => f_luby,
378 X_LAST_UPDATE_LOGIN => 0 );
379 end if;
380 exception
381 when NO_DATA_FOUND then
382
383 select fnd_objects_s.nextval into obj_id from dual;
384
385 fnd_objects_pkg.INSERT_ROW(
386 X_ROWID => row_id,
387 X_OBJ_NAME => X_OBJ_NAME,
388 X_OBJECT_ID => obj_id,
389 X_PK1_COLUMN_NAME => X_PK1_COLUMN_NAME,
390 X_PK2_COLUMN_NAME => X_PK2_COLUMN_NAME,
391 X_PK3_COLUMN_NAME => X_PK3_COLUMN_NAME,
392 X_PK4_COLUMN_NAME => X_PK4_COLUMN_NAME,
393 X_PK5_COLUMN_NAME => X_PK5_COLUMN_NAME,
394 X_PK1_COLUMN_TYPE => X_PK1_COLUMN_TYPE,
395 X_PK2_COLUMN_TYPE => X_PK2_COLUMN_TYPE,
396 X_PK3_COLUMN_TYPE => X_PK3_COLUMN_TYPE,
397 X_PK4_COLUMN_TYPE => X_PK4_COLUMN_TYPE,
398 X_PK5_COLUMN_TYPE => X_PK5_COLUMN_TYPE,
399 X_APPLICATION_ID => app_id,
400 X_DATABASE_OBJECT_NAME => X_DATABASE_OBJECT_NAME,
401 X_DISPLAY_NAME => X_DISPLAY_NAME,
402 X_DESCRIPTION => X_DESCRIPTION,
403 X_CREATION_DATE => f_ludate,
404 X_CREATED_BY => f_luby,
405 X_LAST_UPDATE_DATE => f_ludate,
406 X_LAST_UPDATED_BY => f_luby,
407 X_LAST_UPDATE_LOGIN => 0 );
408 end LOAD_ROW;
409
410 /* Overloaded version below */
411 procedure TRANSLATE_ROW (
412 X_OBJ_NAME in VARCHAR2,
413 X_OWNER in VARCHAR2,
414 X_DISPLAY_NAME in VARCHAR2,
415 X_DESCRIPTION in VARCHAR2,
416 X_CUSTOM_MODE in VARCHAR2
417 ) is
418 begin
419 fnd_objects_pkg.TRANSLATE_ROW (
420 X_OBJ_NAME => X_OBJ_NAME,
421 X_OWNER => X_OWNER,
422 X_DISPLAY_NAME => X_DISPLAY_NAME,
423 X_DESCRIPTION => X_DESCRIPTION,
424 X_CUSTOM_MODE => X_CUSTOM_MODE,
425 X_LAST_UPDATE_DATE => null
426 );
427 end TRANSLATE_ROW;
428
429 /* Overloaded version above */
430 procedure TRANSLATE_ROW (
431 X_OBJ_NAME in VARCHAR2,
432 X_OWNER in VARCHAR2,
433 X_DISPLAY_NAME in VARCHAR2,
434 X_DESCRIPTION in VARCHAR2,
435 X_CUSTOM_MODE in VARCHAR2,
436 X_LAST_UPDATE_DATE in VARCHAR2
437 ) is
438 f_luby number; -- entity owner in file
439 f_ludate date; -- entity update date in file
440 db_luby number; -- entity owner in db
441 db_ludate date; -- entity update date in db
442 begin
443 -- Translate owner to file_last_updated_by
444 f_luby := fnd_load_util.owner_id(x_owner);
445
446 -- Translate char last_update_date to date
447 f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
448
449 select LAST_UPDATED_BY, LAST_UPDATE_DATE
450 into db_luby, db_ludate
451 from fnd_objects_tl
452 where object_id = (select o.object_id from fnd_objects o
453 where o.obj_name = X_OBJ_NAME)
454 and userenv('LANG') = LANGUAGE;
455
456 if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
457 db_ludate, X_CUSTOM_MODE)) then
458 update fnd_objects_tl set
459 display_name = nvl(X_DISPLAY_NAME, display_name),
460 description = nvl(X_DESCRIPTION, description),
461 source_lang = userenv('LANG'),
462 last_update_date = f_ludate,
463 last_updated_by = f_luby,
464 last_update_login = 0
465 where object_id = (select o.object_id from fnd_objects o
466 where o.obj_name = X_OBJ_NAME)
467 and userenv('LANG') in (language, source_lang);
468 end if;
469
470 end TRANSLATE_ROW;
471
472 procedure DELETE_ROW (
473 X_OBJECT_ID in NUMBER
474 ) is
475 begin
476 delete from FND_OBJECTS_TL
477 where OBJECT_ID = X_OBJECT_ID;
478
479 if (sql%notfound) then
480 raise no_data_found;
481 end if;
482
483 delete from FND_OBJECTS
484 where OBJECT_ID = X_OBJECT_ID;
485
486 if (sql%notfound) then
487 raise no_data_found;
488 end if;
489 end DELETE_ROW;
490
491 procedure ADD_LANGUAGE
492 is
493 begin
494 /* Mar/19/03 requested by Ric Ginsberg */
495 /* The following delete and update statements are commented out */
496 /* as a quick workaround to fix the time-consuming table handler issue */
497 /* Eventually we'll need to turn them into a separate fix_language procedure */
498 /*
499
500 delete from FND_OBJECTS_TL T
501 where not exists
502 (select NULL
503 from FND_OBJECTS B
504 where B.OBJECT_ID = T.OBJECT_ID
505 );
506
507 update FND_OBJECTS_TL T set (
508 DISPLAY_NAME,
509 DESCRIPTION
510 ) = (select
511 B.DISPLAY_NAME,
512 B.DESCRIPTION
513 from FND_OBJECTS_TL B
514 where B.OBJECT_ID = T.OBJECT_ID
515 and B.LANGUAGE = T.SOURCE_LANG)
516 where (
517 T.OBJECT_ID,
518 T.LANGUAGE
519 ) in (select
520 SUBT.OBJECT_ID,
521 SUBT.LANGUAGE
522 from FND_OBJECTS_TL SUBB, FND_OBJECTS_TL SUBT
523 where SUBB.OBJECT_ID = SUBT.OBJECT_ID
524 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
525 and (SUBB.DISPLAY_NAME <> SUBT.DISPLAY_NAME
526 or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
527 ));
528 */
529
530 insert into FND_OBJECTS_TL (
531 CREATED_BY,
532 CREATION_DATE,
533 LAST_UPDATED_BY,
534 LAST_UPDATE_DATE,
535 LAST_UPDATE_LOGIN,
536 OBJECT_ID,
537 DISPLAY_NAME,
538 DESCRIPTION,
539 LANGUAGE,
540 SOURCE_LANG
541 ) select
542 B.CREATED_BY,
543 B.CREATION_DATE,
544 B.LAST_UPDATED_BY,
545 B.LAST_UPDATE_DATE,
546 B.LAST_UPDATE_LOGIN,
547 B.OBJECT_ID,
548 B.DISPLAY_NAME,
549 B.DESCRIPTION,
550 L.LANGUAGE_CODE,
551 B.SOURCE_LANG
552 from FND_OBJECTS_TL B, FND_LANGUAGES L
553 where L.INSTALLED_FLAG in ('I', 'B')
554 and B.LANGUAGE = userenv('LANG')
555 and not exists
556 (select NULL
557 from FND_OBJECTS_TL T
558 where T.OBJECT_ID = B.OBJECT_ID
559 and T.LANGUAGE = L.LANGUAGE_CODE);
560 end ADD_LANGUAGE;
561
562 end FND_OBJECTS_PKG;