1 package body FND_COL_PRIV_ATTRIBUTES_PKG as
2 /* $Header: fndpiacb.pls 120.1 2005/07/02 03:34:29 appldev noship $ */
3 procedure INSERT_ROW (
4 X_ROWID in out nocopy VARCHAR2,
5 X_PRIVACY_ATTRIBUTE_CODE in VARCHAR2,
6 X_APPLICATION_ID in NUMBER,
7 X_TABLE_ID in NUMBER,
8 X_COLUMN_ID in NUMBER,
9 X_COLUMN_SEQUENCE in NUMBER,
10 X_ATTRIBUTE1 in VARCHAR2,
11 X_ATTRIBUTE2 in VARCHAR2,
12 X_ATTRIBUTE3 in VARCHAR2,
13 X_ATTRIBUTE4 in VARCHAR2,
14 X_ATTRIBUTE5 in VARCHAR2,
15 X_ATTRIBUTE6 in VARCHAR2,
16 X_ATTRIBUTE7 in VARCHAR2,
17 X_ATTRIBUTE8 in VARCHAR2,
18 X_ATTRIBUTE9 in VARCHAR2,
19 X_ATTRIBUTE10 in VARCHAR2,
20 X_ATTRIBUTE11 in VARCHAR2,
21 X_ATTRIBUTE12 in VARCHAR2,
22 X_ATTRIBUTE13 in VARCHAR2,
23 X_ATTRIBUTE14 in VARCHAR2,
24 X_ATTRIBUTE15 in VARCHAR2,
25 X_ATTRIBUTE_CATEGORY in VARCHAR2,
26 X_OBJECT_VERSION_NUMBER in NUMBER,
27 X_COMMENTS in VARCHAR2,
28 X_CREATION_DATE in DATE,
29 X_CREATED_BY in NUMBER,
30 X_LAST_UPDATE_DATE in DATE,
31 X_LAST_UPDATED_BY in NUMBER,
32 X_LAST_UPDATE_LOGIN in NUMBER,
33 X_DSCRAM_LEVEL in VARCHAR2,
34 X_DSCRAM_ALGO_ID in NUMBER
35 ) is
36 cursor C is select ROWID from FND_COL_PRIV_ATTRIBUTES_B
37 where PRIVACY_ATTRIBUTE_CODE = X_PRIVACY_ATTRIBUTE_CODE
38 and APPLICATION_ID = X_APPLICATION_ID
39 and TABLE_ID = X_TABLE_ID
40 and COLUMN_ID = X_COLUMN_ID
41 ;
42 begin
43 insert into FND_COL_PRIV_ATTRIBUTES_B (
44 PRIVACY_ATTRIBUTE_CODE,
45 APPLICATION_ID,
46 TABLE_ID,
47 COLUMN_ID,
48 COLUMN_SEQUENCE,
49 ATTRIBUTE1,
50 ATTRIBUTE2,
51 ATTRIBUTE3,
52 ATTRIBUTE4,
53 ATTRIBUTE5,
54 ATTRIBUTE6,
55 ATTRIBUTE7,
56 ATTRIBUTE8,
57 ATTRIBUTE9,
58 ATTRIBUTE10,
59 ATTRIBUTE11,
60 ATTRIBUTE12,
61 ATTRIBUTE13,
62 ATTRIBUTE14,
63 ATTRIBUTE15,
64 ATTRIBUTE_CATEGORY,
65 OBJECT_VERSION_NUMBER,
66 CREATION_DATE,
67 CREATED_BY,
68 LAST_UPDATE_DATE,
69 LAST_UPDATED_BY,
70 LAST_UPDATE_LOGIN,
71 DSCRAM_LEVEL,
72 DSCRAM_ALGO_ID
73 ) values (
74 X_PRIVACY_ATTRIBUTE_CODE,
75 X_APPLICATION_ID,
76 X_TABLE_ID,
77 X_COLUMN_ID,
78 X_COLUMN_SEQUENCE,
79 X_ATTRIBUTE1,
80 X_ATTRIBUTE2,
81 X_ATTRIBUTE3,
82 X_ATTRIBUTE4,
83 X_ATTRIBUTE5,
84 X_ATTRIBUTE6,
85 X_ATTRIBUTE7,
86 X_ATTRIBUTE8,
87 X_ATTRIBUTE9,
88 X_ATTRIBUTE10,
89 X_ATTRIBUTE11,
90 X_ATTRIBUTE12,
91 X_ATTRIBUTE13,
92 X_ATTRIBUTE14,
93 X_ATTRIBUTE15,
94 X_ATTRIBUTE_CATEGORY,
95 X_OBJECT_VERSION_NUMBER,
96 X_CREATION_DATE,
97 X_CREATED_BY,
98 X_LAST_UPDATE_DATE,
99 X_LAST_UPDATED_BY,
100 X_LAST_UPDATE_LOGIN,
101 X_DSCRAM_LEVEL,
102 X_DSCRAM_ALGO_ID
103 );
104
105 insert into FND_COL_PRIV_ATTRIBUTES_TL (
106 PRIVACY_ATTRIBUTE_CODE,
107 APPLICATION_ID,
108 TABLE_ID,
109 COLUMN_ID,
110 COMMENTS,
111 CREATED_BY,
112 CREATION_DATE,
113 LAST_UPDATED_BY,
114 LAST_UPDATE_DATE,
115 LAST_UPDATE_LOGIN,
116 LANGUAGE,
117 SOURCE_LANG
118 ) select
119 X_PRIVACY_ATTRIBUTE_CODE,
120 X_APPLICATION_ID,
121 X_TABLE_ID,
122 X_COLUMN_ID,
123 X_COMMENTS,
124 X_CREATED_BY,
125 X_CREATION_DATE,
126 X_LAST_UPDATED_BY,
127 X_LAST_UPDATE_DATE,
128 X_LAST_UPDATE_LOGIN,
129 L.LANGUAGE_CODE,
130 userenv('LANG')
131 from FND_LANGUAGES L
132 where L.INSTALLED_FLAG in ('I', 'B')
133 and not exists
134 (select NULL
135 from FND_COL_PRIV_ATTRIBUTES_TL T
136 where T.PRIVACY_ATTRIBUTE_CODE = X_PRIVACY_ATTRIBUTE_CODE
137 and T.APPLICATION_ID = X_APPLICATION_ID
138 and T.TABLE_ID = X_TABLE_ID
139 and T.COLUMN_ID = X_COLUMN_ID
140 and T.LANGUAGE = L.LANGUAGE_CODE);
141
142 open c;
143 fetch c into X_ROWID;
144 if (c%notfound) then
145 close c;
146 raise no_data_found;
147 end if;
148 close c;
149
150 end INSERT_ROW;
151
152 procedure LOCK_ROW (
153 X_PRIVACY_ATTRIBUTE_CODE in VARCHAR2,
154 X_APPLICATION_ID in NUMBER,
155 X_TABLE_ID in NUMBER,
156 X_COLUMN_ID in NUMBER,
157 X_COLUMN_SEQUENCE in NUMBER,
158 X_ATTRIBUTE1 in VARCHAR2,
159 X_ATTRIBUTE2 in VARCHAR2,
160 X_ATTRIBUTE3 in VARCHAR2,
161 X_ATTRIBUTE4 in VARCHAR2,
162 X_ATTRIBUTE5 in VARCHAR2,
163 X_ATTRIBUTE6 in VARCHAR2,
164 X_ATTRIBUTE7 in VARCHAR2,
165 X_ATTRIBUTE8 in VARCHAR2,
166 X_ATTRIBUTE9 in VARCHAR2,
167 X_ATTRIBUTE10 in VARCHAR2,
168 X_ATTRIBUTE11 in VARCHAR2,
169 X_ATTRIBUTE12 in VARCHAR2,
170 X_ATTRIBUTE13 in VARCHAR2,
171 X_ATTRIBUTE14 in VARCHAR2,
172 X_ATTRIBUTE15 in VARCHAR2,
173 X_ATTRIBUTE_CATEGORY in VARCHAR2,
174 X_OBJECT_VERSION_NUMBER in NUMBER,
175 X_COMMENTS in VARCHAR2,
176 X_DSCRAM_LEVEL in VARCHAR2,
177 X_DSCRAM_ALGO_ID in NUMBER
178 ) is
179 cursor c is select
180 COLUMN_SEQUENCE,
181 ATTRIBUTE1,
182 ATTRIBUTE2,
183 ATTRIBUTE3,
184 ATTRIBUTE4,
185 ATTRIBUTE5,
186 ATTRIBUTE6,
187 ATTRIBUTE7,
188 ATTRIBUTE8,
189 ATTRIBUTE9,
190 ATTRIBUTE10,
191 ATTRIBUTE11,
192 ATTRIBUTE12,
193 ATTRIBUTE13,
194 ATTRIBUTE14,
195 ATTRIBUTE15,
196 ATTRIBUTE_CATEGORY,
197 OBJECT_VERSION_NUMBER,
198 DSCRAM_LEVEL,
199 DSCRAM_ALGO_ID
200 from FND_COL_PRIV_ATTRIBUTES_B
201 where PRIVACY_ATTRIBUTE_CODE = X_PRIVACY_ATTRIBUTE_CODE
202 and APPLICATION_ID = X_APPLICATION_ID
203 and TABLE_ID = X_TABLE_ID
204 and COLUMN_ID = X_COLUMN_ID
205 for update of PRIVACY_ATTRIBUTE_CODE nowait;
206 recinfo c%rowtype;
207
208 cursor c1 is select
209 COMMENTS,
210 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
211 from FND_COL_PRIV_ATTRIBUTES_TL
212 where PRIVACY_ATTRIBUTE_CODE = X_PRIVACY_ATTRIBUTE_CODE
213 and APPLICATION_ID = X_APPLICATION_ID
214 and TABLE_ID = X_TABLE_ID
215 and COLUMN_ID = X_COLUMN_ID
216 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
217 for update of PRIVACY_ATTRIBUTE_CODE nowait;
218 begin
219 open c;
220 fetch c into recinfo;
221 if (c%notfound) then
222 close c;
223 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
224 app_exception.raise_exception;
225 end if;
226 close c;
227 if ( (recinfo.COLUMN_SEQUENCE = X_COLUMN_SEQUENCE)
228 AND ((recinfo.ATTRIBUTE1 = X_ATTRIBUTE1)
229 OR ((recinfo.ATTRIBUTE1 is null) AND (X_ATTRIBUTE1 is null)))
230 AND ((recinfo.ATTRIBUTE2 = X_ATTRIBUTE2)
231 OR ((recinfo.ATTRIBUTE2 is null) AND (X_ATTRIBUTE2 is null)))
232 AND ((recinfo.ATTRIBUTE3 = X_ATTRIBUTE3)
233 OR ((recinfo.ATTRIBUTE3 is null) AND (X_ATTRIBUTE3 is null)))
234 AND ((recinfo.ATTRIBUTE4 = X_ATTRIBUTE4)
235 OR ((recinfo.ATTRIBUTE4 is null) AND (X_ATTRIBUTE4 is null)))
236 AND ((recinfo.ATTRIBUTE5 = X_ATTRIBUTE5)
237 OR ((recinfo.ATTRIBUTE5 is null) AND (X_ATTRIBUTE5 is null)))
238 AND ((recinfo.ATTRIBUTE6 = X_ATTRIBUTE6)
239 OR ((recinfo.ATTRIBUTE6 is null) AND (X_ATTRIBUTE6 is null)))
240 AND ((recinfo.ATTRIBUTE7 = X_ATTRIBUTE7)
241 OR ((recinfo.ATTRIBUTE7 is null) AND (X_ATTRIBUTE7 is null)))
242 AND ((recinfo.ATTRIBUTE8 = X_ATTRIBUTE8)
243 OR ((recinfo.ATTRIBUTE8 is null) AND (X_ATTRIBUTE8 is null)))
244 AND ((recinfo.ATTRIBUTE9 = X_ATTRIBUTE9)
245 OR ((recinfo.ATTRIBUTE9 is null) AND (X_ATTRIBUTE9 is null)))
246 AND ((recinfo.ATTRIBUTE10 = X_ATTRIBUTE10)
247 OR ((recinfo.ATTRIBUTE10 is null) AND (X_ATTRIBUTE10 is null)))
248 AND ((recinfo.ATTRIBUTE11 = X_ATTRIBUTE11)
249 OR ((recinfo.ATTRIBUTE11 is null) AND (X_ATTRIBUTE11 is null)))
250 AND ((recinfo.ATTRIBUTE12 = X_ATTRIBUTE12)
251 OR ((recinfo.ATTRIBUTE12 is null) AND (X_ATTRIBUTE12 is null)))
252 AND ((recinfo.ATTRIBUTE13 = X_ATTRIBUTE13)
253 OR ((recinfo.ATTRIBUTE13 is null) AND (X_ATTRIBUTE13 is null)))
254 AND ((recinfo.ATTRIBUTE14 = X_ATTRIBUTE14)
255 OR ((recinfo.ATTRIBUTE14 is null) AND (X_ATTRIBUTE14 is null)))
256 AND ((recinfo.ATTRIBUTE15 = X_ATTRIBUTE15)
257 OR ((recinfo.ATTRIBUTE15 is null) AND (X_ATTRIBUTE15 is null)))
258 AND ((recinfo.ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY)
259 OR ((recinfo.ATTRIBUTE_CATEGORY is null) AND (X_ATTRIBUTE_CATEGORY is null)))
260 AND ((recinfo.DSCRAM_LEVEL = X_DSCRAM_LEVEL)
261 OR ((recinfo.DSCRAM_LEVEL is null) AND (X_DSCRAM_LEVEL is null)))
262 AND ((recinfo.DSCRAM_ALGO_ID = X_DSCRAM_ALGO_ID)
263 OR ((recinfo.DSCRAM_ALGO_ID is null) AND (X_DSCRAM_ALGO_ID is null)))
264 AND (recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
265 ) then
266 null;
267 else
268 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
269 app_exception.raise_exception;
270 end if;
271
272 for tlinfo in c1 loop
273 if (tlinfo.BASELANG = 'Y') then
274 if ( ((tlinfo.COMMENTS = X_COMMENTS)
275 OR ((tlinfo.COMMENTS is null) AND (X_COMMENTS is null)))
276 ) then
277 null;
278 else
279 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
280 app_exception.raise_exception;
281 end if;
282 end if;
283 end loop;
284 return;
285 end LOCK_ROW;
286
287 procedure UPDATE_ROW (
288 X_PRIVACY_ATTRIBUTE_CODE in VARCHAR2,
289 X_APPLICATION_ID in NUMBER,
290 X_TABLE_ID in NUMBER,
291 X_COLUMN_ID in NUMBER,
292 X_COLUMN_SEQUENCE in NUMBER,
293 X_ATTRIBUTE1 in VARCHAR2,
294 X_ATTRIBUTE2 in VARCHAR2,
295 X_ATTRIBUTE3 in VARCHAR2,
296 X_ATTRIBUTE4 in VARCHAR2,
297 X_ATTRIBUTE5 in VARCHAR2,
298 X_ATTRIBUTE6 in VARCHAR2,
299 X_ATTRIBUTE7 in VARCHAR2,
300 X_ATTRIBUTE8 in VARCHAR2,
301 X_ATTRIBUTE9 in VARCHAR2,
302 X_ATTRIBUTE10 in VARCHAR2,
303 X_ATTRIBUTE11 in VARCHAR2,
304 X_ATTRIBUTE12 in VARCHAR2,
305 X_ATTRIBUTE13 in VARCHAR2,
306 X_ATTRIBUTE14 in VARCHAR2,
307 X_ATTRIBUTE15 in VARCHAR2,
308 X_ATTRIBUTE_CATEGORY in VARCHAR2,
309 X_OBJECT_VERSION_NUMBER in NUMBER,
310 X_COMMENTS in VARCHAR2,
311 X_LAST_UPDATE_DATE in DATE,
312 X_LAST_UPDATED_BY in NUMBER,
313 X_LAST_UPDATE_LOGIN in NUMBER,
314 X_DSCRAM_LEVEL in VARCHAR2,
315 X_DSCRAM_ALGO_ID in NUMBER
316 ) is
317 begin
318 update FND_COL_PRIV_ATTRIBUTES_B set
319 COLUMN_SEQUENCE = X_COLUMN_SEQUENCE,
320 ATTRIBUTE1 = X_ATTRIBUTE1,
321 ATTRIBUTE2 = X_ATTRIBUTE2,
322 ATTRIBUTE3 = X_ATTRIBUTE3,
323 ATTRIBUTE4 = X_ATTRIBUTE4,
324 ATTRIBUTE5 = X_ATTRIBUTE5,
325 ATTRIBUTE6 = X_ATTRIBUTE6,
326 ATTRIBUTE7 = X_ATTRIBUTE7,
327 ATTRIBUTE8 = X_ATTRIBUTE8,
328 ATTRIBUTE9 = X_ATTRIBUTE9,
329 ATTRIBUTE10 = X_ATTRIBUTE10,
330 ATTRIBUTE11 = X_ATTRIBUTE11,
331 ATTRIBUTE12 = X_ATTRIBUTE12,
332 ATTRIBUTE13 = X_ATTRIBUTE13,
333 ATTRIBUTE14 = X_ATTRIBUTE14,
334 ATTRIBUTE15 = X_ATTRIBUTE15,
335 ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY,
336 OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
337 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
338 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
339 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
340 DSCRAM_LEVEL = X_DSCRAM_LEVEL,
341 DSCRAM_ALGO_ID = X_DSCRAM_ALGO_ID
342 where PRIVACY_ATTRIBUTE_CODE = X_PRIVACY_ATTRIBUTE_CODE
343 and APPLICATION_ID = X_APPLICATION_ID
344 and TABLE_ID = X_TABLE_ID
345 and COLUMN_ID = X_COLUMN_ID;
346
347 if (sql%notfound) then
348 raise no_data_found;
349 end if;
350
351 update FND_COL_PRIV_ATTRIBUTES_TL set
352 COMMENTS = X_COMMENTS,
353 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
354 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
355 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
356 SOURCE_LANG = userenv('LANG')
357 where PRIVACY_ATTRIBUTE_CODE = X_PRIVACY_ATTRIBUTE_CODE
358 and APPLICATION_ID = X_APPLICATION_ID
359 and TABLE_ID = X_TABLE_ID
360 and COLUMN_ID = X_COLUMN_ID
361 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
362
363 if (sql%notfound) then
364 raise no_data_found;
365 end if;
366 end UPDATE_ROW;
367
368 procedure DELETE_ROW (
369 X_PRIVACY_ATTRIBUTE_CODE in VARCHAR2,
370 X_APPLICATION_ID in NUMBER,
371 X_TABLE_ID in NUMBER,
372 X_COLUMN_ID in NUMBER
373 ) is
374 begin
375 delete from FND_COL_PRIV_ATTRIBUTES_TL
376 where PRIVACY_ATTRIBUTE_CODE = X_PRIVACY_ATTRIBUTE_CODE
377 and APPLICATION_ID = X_APPLICATION_ID
378 and TABLE_ID = X_TABLE_ID
379 and COLUMN_ID = X_COLUMN_ID;
380
381 if (sql%notfound) then
382 raise no_data_found;
383 end if;
384
385 delete from FND_COL_PRIV_ATTRIBUTES_B
386 where PRIVACY_ATTRIBUTE_CODE = X_PRIVACY_ATTRIBUTE_CODE
387 and APPLICATION_ID = X_APPLICATION_ID
388 and TABLE_ID = X_TABLE_ID
389 and COLUMN_ID = X_COLUMN_ID;
390
391 if (sql%notfound) then
392 raise no_data_found;
393 end if;
394 end DELETE_ROW;
395
396 procedure ADD_LANGUAGE
397 is
398 begin
399 delete from FND_COL_PRIV_ATTRIBUTES_TL T
400 where not exists
401 (select NULL
402 from FND_COL_PRIV_ATTRIBUTES_B B
403 where B.PRIVACY_ATTRIBUTE_CODE = T.PRIVACY_ATTRIBUTE_CODE
404 and B.APPLICATION_ID = T.APPLICATION_ID
405 and B.TABLE_ID = T.TABLE_ID
406 and B.COLUMN_ID = T.COLUMN_ID
407 );
408
409 update FND_COL_PRIV_ATTRIBUTES_TL T set (
410 COMMENTS
411 ) = (select
412 B.COMMENTS
413 from FND_COL_PRIV_ATTRIBUTES_TL B
414 where B.PRIVACY_ATTRIBUTE_CODE = T.PRIVACY_ATTRIBUTE_CODE
415 and B.APPLICATION_ID = T.APPLICATION_ID
416 and B.TABLE_ID = T.TABLE_ID
417 and B.COLUMN_ID = T.COLUMN_ID
418 and B.LANGUAGE = T.SOURCE_LANG)
419 where (
420 T.PRIVACY_ATTRIBUTE_CODE,
421 T.APPLICATION_ID,
422 T.TABLE_ID,
423 T.COLUMN_ID,
424 T.LANGUAGE
425 ) in (select
426 SUBT.PRIVACY_ATTRIBUTE_CODE,
427 SUBT.APPLICATION_ID,
428 SUBT.TABLE_ID,
429 SUBT.COLUMN_ID,
430 SUBT.LANGUAGE
431 from FND_COL_PRIV_ATTRIBUTES_TL SUBB, FND_COL_PRIV_ATTRIBUTES_TL SUBT
432 where SUBB.PRIVACY_ATTRIBUTE_CODE = SUBT.PRIVACY_ATTRIBUTE_CODE
433 and SUBB.APPLICATION_ID = SUBT.APPLICATION_ID
434 and SUBB.TABLE_ID = SUBT.TABLE_ID
435 and SUBB.COLUMN_ID = SUBT.COLUMN_ID
436 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
437 and (SUBB.COMMENTS <> SUBT.COMMENTS
438 or (SUBB.COMMENTS is null and SUBT.COMMENTS is not null)
439 or (SUBB.COMMENTS is not null and SUBT.COMMENTS is null)
440 ));
441
442 insert into FND_COL_PRIV_ATTRIBUTES_TL (
443 PRIVACY_ATTRIBUTE_CODE,
444 APPLICATION_ID,
445 TABLE_ID,
446 COLUMN_ID,
447 COMMENTS,
448 CREATED_BY,
449 CREATION_DATE,
450 LAST_UPDATED_BY,
451 LAST_UPDATE_DATE,
452 LAST_UPDATE_LOGIN,
453 LANGUAGE,
454 SOURCE_LANG
455 ) select /*+ ORDERED */
459 B.COLUMN_ID,
456 B.PRIVACY_ATTRIBUTE_CODE,
457 B.APPLICATION_ID,
458 B.TABLE_ID,
460 B.COMMENTS,
461 B.CREATED_BY,
462 B.CREATION_DATE,
463 B.LAST_UPDATED_BY,
464 B.LAST_UPDATE_DATE,
465 B.LAST_UPDATE_LOGIN,
466 L.LANGUAGE_CODE,
467 B.SOURCE_LANG
468 from FND_COL_PRIV_ATTRIBUTES_TL B, FND_LANGUAGES L
469 where L.INSTALLED_FLAG in ('I', 'B')
470 and B.LANGUAGE = userenv('LANG')
471 and not exists
472 (select NULL
473 from FND_COL_PRIV_ATTRIBUTES_TL T
474 where T.PRIVACY_ATTRIBUTE_CODE = B.PRIVACY_ATTRIBUTE_CODE
475 and T.APPLICATION_ID = B.APPLICATION_ID
476 and T.TABLE_ID = B.TABLE_ID
477 and T.COLUMN_ID = B.COLUMN_ID
478 and T.LANGUAGE = L.LANGUAGE_CODE);
479 end ADD_LANGUAGE;
480
481 procedure TRANSLATE_ROW
482 (X_PRIVACY_ATTRIBUTE_CODE in varchar2,
483 X_APPLICATION_ID in NUMBER,
484 X_TABLE_ID in NUMBER,
485 X_COLUMN_ID in NUMBER,
486 X_COMMENTS in varchar2,
487 x_Last_update_date in date,
488 x_last_updated_by in number,
489 x_last_update_login in number)
490 is
491
492 BEGIN
493
494 UPDATE FND_COL_PRIV_ATTRIBUTES_TL SET
495 comments = nvl(x_comments,comments),
496 last_update_date = nvl(x_last_update_date,sysdate),
497 last_updated_by = x_last_updated_by,
498 last_update_login = 0,
499 source_lang = userenv('LANG')
500 WHERE privacy_attribute_code = x_PRIVACY_ATTRIBUTE_CODE
501 AND application_id = x_application_id
502 AND table_id = x_table_id
503 AND column_id = x_column_id
504 AND userenv('LANG') in (LANGUAGE,SOURCE_LANG);
505
506 IF (sql%notfound) THEN
507 raise no_data_found;
508 END IF;
509
510 end TRANSLATE_ROW;
511
512 end FND_COL_PRIV_ATTRIBUTES_PKG;