DBA Data[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;