DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_KB_HISTORIES_PKG

Source


1 PACKAGE BODY CS_KB_HISTORIES_PKG AS
2 /* $Header: cskbhib.pls 115.10 2002/12/02 21:57:35 mkettle ship $ */
3 
4 
5 FUNCTION Create_History(
6   p_name            in varchar2,
7   p_desc            in varchar2,
8   P_ATTRIBUTE_CATEGORY in VARCHAR2,
9   P_ATTRIBUTE1 in VARCHAR2,
10   P_ATTRIBUTE2 in VARCHAR2,
11   P_ATTRIBUTE3 in VARCHAR2,
12   P_ATTRIBUTE4 in VARCHAR2,
13   P_ATTRIBUTE5 in VARCHAR2,
14   P_ATTRIBUTE6 in VARCHAR2,
15   P_ATTRIBUTE7 in VARCHAR2,
16   P_ATTRIBUTE8 in VARCHAR2,
17   P_ATTRIBUTE9 in VARCHAR2,
18   P_ATTRIBUTE10 in VARCHAR2,
19   P_ATTRIBUTE11 in VARCHAR2,
20   P_ATTRIBUTE12 in VARCHAR2,
21   P_ATTRIBUTE13 in VARCHAR2,
22   P_ATTRIBUTE14 in VARCHAR2,
23   P_ATTRIBUTE15 in VARCHAR2
24 ) return number is
25   l_date  date;
26   l_created_by number;
27   l_login number;
28   l_count pls_integer;
29   l_id number;
30   l_rowid varchar2(30);
31 begin
32 
33   -- Check params
34 
35   --prepare data, then insert new def
36   select cs_kb_histories_s.nextval into l_id from dual;
37   l_date := sysdate;
38   l_created_by := fnd_global.user_id;
39   l_login := fnd_global.login_id;
40 
41   CS_KB_HISTORIES_PKG.Insert_Row(
42     X_Rowid => l_rowid,
43     X_History_Id => l_id,
44     X_history_name => null,
45     X_user_id => l_created_by,
46     X_entry_date => sysdate,
47     X_name => p_name,
48     X_description => p_desc,
49     X_Creation_Date => l_date,
50     X_Created_By => l_created_by,
51     X_Last_Update_Date => l_date,
52     X_Last_Updated_By => l_created_by,
53     X_Last_Update_Login => l_login,
54     X_ATTRIBUTE_CATEGORY => P_ATTRIBUTE_CATEGORY,
55     X_ATTRIBUTE1 => P_ATTRIBUTE1,
56     X_ATTRIBUTE2 => P_ATTRIBUTE2,
57     X_ATTRIBUTE3 => P_ATTRIBUTE3,
58     X_ATTRIBUTE4 => P_ATTRIBUTE4,
59     X_ATTRIBUTE5 => P_ATTRIBUTE5,
60     X_ATTRIBUTE6 => P_ATTRIBUTE6,
61     X_ATTRIBUTE7 => P_ATTRIBUTE7,
62     X_ATTRIBUTE8 => P_ATTRIBUTE8,
63     X_ATTRIBUTE9 => P_ATTRIBUTE9,
64     X_ATTRIBUTE10 => P_ATTRIBUTE10,
65     X_ATTRIBUTE11 => P_ATTRIBUTE11,
66     X_ATTRIBUTE12 => P_ATTRIBUTE12,
67     X_ATTRIBUTE13 => P_ATTRIBUTE13,
68     X_ATTRIBUTE14 => P_ATTRIBUTE14,
69     X_ATTRIBUTE15 => P_ATTRIBUTE15
70 );
71   return l_id;
72 
73   <<error_found>>
74   return ERROR_STATUS;
75 
76 end Create_History;
77 
78 
79 
80 --
81 -- Delete
82 
83 FUNCTION Delete_History(
84   p_history_id in number
85 ) return number is
86   l_ret number;
87   l_count pls_integer;
88 begin
89   if p_history_id is null or p_history_id <= 0 then return ERROR_STATUS; end if;
90 
91   select count(*) into l_count
92     from cs_kb_histories_b
93     where history_id = p_history_id;
94   if(l_count <= 0) then return ERROR_STATUS; end if;
95 
96   CS_KB_HISTORIES_PKG.Delete_Row(
97     X_History_Id => p_history_id);
98 
99    return OKAY_STATUS;
100   <<error_found>>
101   return ERROR_STATUS;
102 
103 exception
104   WHEN OTHERS THEN
105     return ERROR_STATUS;
106 end Delete_History;
107 
108 
109 
110 procedure INSERT_ROW (
111   X_ROWID in OUT NOCOPY VARCHAR2,
112   X_HISTORY_ID in NUMBER,
113   X_HISTORY_NAME in VARCHAR2,
114   X_USER_ID in NUMBER,
115   X_ENTRY_DATE in DATE,
116   X_NAME in VARCHAR2,
117   X_DESCRIPTION in VARCHAR2,
118   X_CREATION_DATE in DATE,
119   X_CREATED_BY in NUMBER,
120   X_LAST_UPDATE_DATE in DATE,
121   X_LAST_UPDATED_BY in NUMBER,
122   X_LAST_UPDATE_LOGIN in NUMBER,
123   X_ATTRIBUTE_CATEGORY in VARCHAR2,
124   X_ATTRIBUTE1 in VARCHAR2,
125   X_ATTRIBUTE2 in VARCHAR2,
126   X_ATTRIBUTE3 in VARCHAR2,
127   X_ATTRIBUTE4 in VARCHAR2,
128   X_ATTRIBUTE5 in VARCHAR2,
129   X_ATTRIBUTE6 in VARCHAR2,
130   X_ATTRIBUTE7 in VARCHAR2,
131   X_ATTRIBUTE8 in VARCHAR2,
132   X_ATTRIBUTE9 in VARCHAR2,
133   X_ATTRIBUTE10 in VARCHAR2,
134   X_ATTRIBUTE11 in VARCHAR2,
135   X_ATTRIBUTE12 in VARCHAR2,
136   X_ATTRIBUTE13 in VARCHAR2,
137   X_ATTRIBUTE14 in VARCHAR2,
138   X_ATTRIBUTE15 in VARCHAR2
139 ) is
140   cursor C is select ROWID from CS_KB_HISTORIES_B
141     where HISTORY_ID = X_HISTORY_ID
142     ;
143 begin
144   insert into CS_KB_HISTORIES_B (
145     HISTORY_ID,
146     HISTORY_NAME,
147     USER_ID,
148     ENTRY_DATE,
149     CREATION_DATE,
150     CREATED_BY,
151     LAST_UPDATE_DATE,
152     LAST_UPDATED_BY,
153     LAST_UPDATE_LOGIN,
154     ATTRIBUTE_CATEGORY,
155     ATTRIBUTE1,
156     ATTRIBUTE2,
157     ATTRIBUTE3,
158     ATTRIBUTE4,
159     ATTRIBUTE5,
160     ATTRIBUTE6,
161     ATTRIBUTE7,
162     ATTRIBUTE8,
163     ATTRIBUTE9,
164     ATTRIBUTE10,
165     ATTRIBUTE11,
166     ATTRIBUTE12,
167     ATTRIBUTE13,
168     ATTRIBUTE14,
169     ATTRIBUTE15
170   ) values (
171     X_HISTORY_ID,
172     X_HISTORY_NAME,
173     X_USER_ID,
174     X_ENTRY_DATE,
175     X_CREATION_DATE,
176     X_CREATED_BY,
177     X_LAST_UPDATE_DATE,
178     X_LAST_UPDATED_BY,
179     X_LAST_UPDATE_LOGIN,
180     X_ATTRIBUTE_CATEGORY,
181     X_ATTRIBUTE1,
182     X_ATTRIBUTE2,
183     X_ATTRIBUTE3,
184     X_ATTRIBUTE4,
185     X_ATTRIBUTE5,
186     X_ATTRIBUTE6,
187     X_ATTRIBUTE7,
188     X_ATTRIBUTE8,
189     X_ATTRIBUTE9,
190     X_ATTRIBUTE10,
191     X_ATTRIBUTE11,
192     X_ATTRIBUTE12,
193     X_ATTRIBUTE13,
194     X_ATTRIBUTE14,
195     X_ATTRIBUTE15
196   );
197 
198   insert into CS_KB_HISTORIES_TL (
199     HISTORY_ID,
200     NAME,
201     DESCRIPTION,
202     CREATION_DATE,
203     CREATED_BY,
204     LAST_UPDATE_DATE,
205     LAST_UPDATED_BY,
206     LAST_UPDATE_LOGIN,
207     LANGUAGE,
208     SOURCE_LANG
209   ) select
210     X_HISTORY_ID,
211     X_NAME,
212     X_DESCRIPTION,
213     X_CREATION_DATE,
214     X_CREATED_BY,
215     X_LAST_UPDATE_DATE,
216     X_LAST_UPDATED_BY,
217     X_LAST_UPDATE_LOGIN,
218     L.LANGUAGE_CODE,
219     userenv('LANG')
220   from FND_LANGUAGES L
221   where L.INSTALLED_FLAG in ('I', 'B')
222   and not exists
223     (select NULL
224     from CS_KB_HISTORIES_TL T
225     where T.HISTORY_ID = X_HISTORY_ID
226     and T.LANGUAGE = L.LANGUAGE_CODE);
227 
228   open c;
229   fetch c into X_ROWID;
230   if (c%notfound) then
231     close c;
232     raise no_data_found;
233   end if;
234   close c;
235 
236 end INSERT_ROW;
237 
238 procedure LOCK_ROW (
239   X_HISTORY_ID in NUMBER,
240   X_HISTORY_NAME in VARCHAR2,
241   X_USER_ID in NUMBER,
242   X_ENTRY_DATE in DATE,
243   X_NAME in VARCHAR2,
244   X_DESCRIPTION in VARCHAR2,
245   X_ATTRIBUTE_CATEGORY in VARCHAR2,
246   X_ATTRIBUTE1 in VARCHAR2,
247   X_ATTRIBUTE2 in VARCHAR2,
248   X_ATTRIBUTE3 in VARCHAR2,
249   X_ATTRIBUTE4 in VARCHAR2,
250   X_ATTRIBUTE5 in VARCHAR2,
251   X_ATTRIBUTE6 in VARCHAR2,
252   X_ATTRIBUTE7 in VARCHAR2,
253   X_ATTRIBUTE8 in VARCHAR2,
254   X_ATTRIBUTE9 in VARCHAR2,
255   X_ATTRIBUTE10 in VARCHAR2,
256   X_ATTRIBUTE11 in VARCHAR2,
257   X_ATTRIBUTE12 in VARCHAR2,
258   X_ATTRIBUTE13 in VARCHAR2,
259   X_ATTRIBUTE14 in VARCHAR2,
260   X_ATTRIBUTE15 in VARCHAR2
261 ) is
262   cursor c is select
263       HISTORY_ID,
264       HISTORY_NAME,
265       USER_ID,
266       ENTRY_DATE,
267       ATTRIBUTE_CATEGORY,
268       ATTRIBUTE1,
269       ATTRIBUTE2,
270       ATTRIBUTE3,
271       ATTRIBUTE4,
272       ATTRIBUTE5,
273       ATTRIBUTE6,
274       ATTRIBUTE7,
275       ATTRIBUTE8,
276       ATTRIBUTE9,
277       ATTRIBUTE10,
278       ATTRIBUTE11,
279       ATTRIBUTE12,
280       ATTRIBUTE13,
281       ATTRIBUTE14,
282       ATTRIBUTE15
283     from CS_KB_HISTORIES_B
284     where HISTORY_ID = X_HISTORY_ID
285     for update of HISTORY_ID nowait;
286   recinfo c%rowtype;
287 
288   cursor c1 is select
289       NAME,
290       DESCRIPTION,
291       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
292     from CS_KB_HISTORIES_TL
293     where HISTORY_ID = X_HISTORY_ID
294     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
295     for update of HISTORY_ID nowait;
296 begin
297   open c;
298   fetch c into recinfo;
299   if (c%notfound) then
300     close c;
301     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
302     app_exception.raise_exception;
303   end if;
304   close c;
305   if (
306           ((recinfo.HISTORY_ID = X_HISTORY_ID)
307            OR ((recinfo.HISTORY_ID is null) AND (X_HISTORY_ID is null)))
308       AND ((recinfo.HISTORY_NAME = X_HISTORY_NAME)
309            OR ((recinfo.HISTORY_NAME is null) AND (X_HISTORY_NAME is null)))
310       AND ((recinfo.USER_ID = X_USER_ID)
311            OR ((recinfo.USER_ID is null) AND (X_USER_ID is null)))
312       AND ((recinfo.ENTRY_DATE = X_ENTRY_DATE)
313            OR ((recinfo.ENTRY_DATE is null) AND (X_ENTRY_DATE is null)))
314       AND ((recinfo.ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY)
315            OR ((recinfo.ATTRIBUTE_CATEGORY is null) AND (X_ATTRIBUTE_CATEGORY is null)))
316       AND ((recinfo.ATTRIBUTE1 = X_ATTRIBUTE1)
317            OR ((recinfo.ATTRIBUTE1 is null) AND (X_ATTRIBUTE1 is null)))
318       AND ((recinfo.ATTRIBUTE2 = X_ATTRIBUTE2)
319            OR ((recinfo.ATTRIBUTE2 is null) AND (X_ATTRIBUTE2 is null)))
320       AND ((recinfo.ATTRIBUTE3 = X_ATTRIBUTE3)
321            OR ((recinfo.ATTRIBUTE3 is null) AND (X_ATTRIBUTE3 is null)))
322       AND ((recinfo.ATTRIBUTE4 = X_ATTRIBUTE4)
323            OR ((recinfo.ATTRIBUTE4 is null) AND (X_ATTRIBUTE4 is null)))
324       AND ((recinfo.ATTRIBUTE5 = X_ATTRIBUTE5)
325            OR ((recinfo.ATTRIBUTE5 is null) AND (X_ATTRIBUTE5 is null)))
326       AND ((recinfo.ATTRIBUTE6 = X_ATTRIBUTE6)
327            OR ((recinfo.ATTRIBUTE6 is null) AND (X_ATTRIBUTE6 is null)))
328       AND ((recinfo.ATTRIBUTE7 = X_ATTRIBUTE7)
329            OR ((recinfo.ATTRIBUTE7 is null) AND (X_ATTRIBUTE7 is null)))
330       AND ((recinfo.ATTRIBUTE8 = X_ATTRIBUTE8)
331            OR ((recinfo.ATTRIBUTE8 is null) AND (X_ATTRIBUTE8 is null)))
332       AND ((recinfo.ATTRIBUTE9 = X_ATTRIBUTE9)
333            OR ((recinfo.ATTRIBUTE9 is null) AND (X_ATTRIBUTE9 is null)))
334       AND ((recinfo.ATTRIBUTE10 = X_ATTRIBUTE10)
335            OR ((recinfo.ATTRIBUTE10 is null) AND (X_ATTRIBUTE10 is null)))
336       AND ((recinfo.ATTRIBUTE11 = X_ATTRIBUTE11)
337            OR ((recinfo.ATTRIBUTE11 is null) AND (X_ATTRIBUTE11 is null)))
338       AND ((recinfo.ATTRIBUTE12 = X_ATTRIBUTE12)
339            OR ((recinfo.ATTRIBUTE12 is null) AND (X_ATTRIBUTE12 is null)))
340       AND ((recinfo.ATTRIBUTE13 = X_ATTRIBUTE13)
341            OR ((recinfo.ATTRIBUTE13 is null) AND (X_ATTRIBUTE13 is null)))
342       AND ((recinfo.ATTRIBUTE14 = X_ATTRIBUTE14)
343            OR ((recinfo.ATTRIBUTE14 is null) AND (X_ATTRIBUTE14 is null)))
344       AND ((recinfo.ATTRIBUTE15 = X_ATTRIBUTE15)
345            OR ((recinfo.ATTRIBUTE15 is null) AND (X_ATTRIBUTE15 is null)))
346   ) then
347     null;
348   else
349     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
350     app_exception.raise_exception;
351   end if;
352 
353   for tlinfo in c1 loop
354     if (tlinfo.BASELANG = 'Y') then
355       if (    ((tlinfo.NAME = X_NAME)
356                OR ((tlinfo.NAME is null) AND (X_NAME is null)))
357           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
358                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
359       ) then
360         null;
361       else
362         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
363         app_exception.raise_exception;
364       end if;
365     end if;
366   end loop;
367   return;
368 end LOCK_ROW;
369 
370 procedure UPDATE_ROW (
371   X_HISTORY_ID in NUMBER,
372   X_HISTORY_NAME in VARCHAR2,
373   X_USER_ID in NUMBER,
374   X_ENTRY_DATE in DATE,
375   X_NAME in VARCHAR2,
376   X_DESCRIPTION in VARCHAR2,
377   X_LAST_UPDATE_DATE in DATE,
378   X_LAST_UPDATED_BY in NUMBER,
379   X_LAST_UPDATE_LOGIN in NUMBER,
380   X_ATTRIBUTE_CATEGORY in VARCHAR2,
381   X_ATTRIBUTE1 in VARCHAR2,
382   X_ATTRIBUTE2 in VARCHAR2,
383   X_ATTRIBUTE3 in VARCHAR2,
384   X_ATTRIBUTE4 in VARCHAR2,
385   X_ATTRIBUTE5 in VARCHAR2,
386   X_ATTRIBUTE6 in VARCHAR2,
387   X_ATTRIBUTE7 in VARCHAR2,
388   X_ATTRIBUTE8 in VARCHAR2,
389   X_ATTRIBUTE9 in VARCHAR2,
390   X_ATTRIBUTE10 in VARCHAR2,
391   X_ATTRIBUTE11 in VARCHAR2,
392   X_ATTRIBUTE12 in VARCHAR2,
393   X_ATTRIBUTE13 in VARCHAR2,
394   X_ATTRIBUTE14 in VARCHAR2,
395   X_ATTRIBUTE15 in VARCHAR2
396 ) is
397 begin
398   update CS_KB_HISTORIES_B set
399     HISTORY_NAME = X_HISTORY_NAME,
400     USER_ID = X_USER_ID,
401     ENTRY_DATE = X_ENTRY_DATE,
402     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
403     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
404     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
405     ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY,
406     ATTRIBUTE1 = X_ATTRIBUTE1,
407     ATTRIBUTE2 = X_ATTRIBUTE2,
408     ATTRIBUTE3 = X_ATTRIBUTE3,
409     ATTRIBUTE4 = X_ATTRIBUTE4,
410     ATTRIBUTE5 = X_ATTRIBUTE5,
411     ATTRIBUTE6 = X_ATTRIBUTE6,
412     ATTRIBUTE7 = X_ATTRIBUTE7,
413     ATTRIBUTE8 = X_ATTRIBUTE8,
414     ATTRIBUTE9 = X_ATTRIBUTE9,
415     ATTRIBUTE10 = X_ATTRIBUTE10,
416     ATTRIBUTE11 = X_ATTRIBUTE11,
417     ATTRIBUTE12 = X_ATTRIBUTE12,
418     ATTRIBUTE13 = X_ATTRIBUTE13,
419     ATTRIBUTE14 = X_ATTRIBUTE14,
420     ATTRIBUTE15 = X_ATTRIBUTE15
421   where HISTORY_ID = X_HISTORY_ID;
422 
423   if (sql%notfound) then
424     raise no_data_found;
425   end if;
426 
427   update CS_KB_HISTORIES_TL set
428     NAME = X_NAME,
432     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
429     DESCRIPTION = X_DESCRIPTION,
430     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
431     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
433     SOURCE_LANG = userenv('LANG')
434   where HISTORY_ID = X_HISTORY_ID
435   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
436 
437   if (sql%notfound) then
438     raise no_data_found;
439   end if;
440 end UPDATE_ROW;
441 
442 procedure DELETE_ROW (
443   X_HISTORY_ID in NUMBER
444 ) is
445 begin
446   delete from CS_KB_HISTORIES_TL
447   where HISTORY_ID = X_HISTORY_ID;
448 
449   if (sql%notfound) then
450     raise no_data_found;
451   end if;
452 
453   delete from CS_KB_HISTORIES_B
454   where HISTORY_ID = X_HISTORY_ID;
455 
456   if (sql%notfound) then
457     raise no_data_found;
458   end if;
459 end DELETE_ROW;
460 
461 procedure ADD_LANGUAGE
462 is
463 begin
464   delete from CS_KB_HISTORIES_TL T
465   where not exists
466     (select NULL
467     from CS_KB_HISTORIES_B B
468     where B.HISTORY_ID = T.HISTORY_ID
469     );
470 
471   update CS_KB_HISTORIES_TL T set (
472       NAME,
473       DESCRIPTION
474     ) = (select
475       B.NAME,
476       B.DESCRIPTION
477     from CS_KB_HISTORIES_TL B
478     where B.HISTORY_ID = T.HISTORY_ID
479     and B.LANGUAGE = T.SOURCE_LANG)
480   where (
481       T.HISTORY_ID,
482       T.LANGUAGE
483   ) in (select
484       SUBT.HISTORY_ID,
485       SUBT.LANGUAGE
486     from CS_KB_HISTORIES_TL SUBB, CS_KB_HISTORIES_TL SUBT
487     where SUBB.HISTORY_ID = SUBT.HISTORY_ID
488     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
489     and (SUBB.NAME <> SUBT.NAME
490       or (SUBB.NAME is null and SUBT.NAME is not null)
491       or (SUBB.NAME is not null and SUBT.NAME is null)
492       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
493       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
494       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
495   ));
496 
497   insert into CS_KB_HISTORIES_TL (
498     HISTORY_ID,
499     NAME,
500     DESCRIPTION,
501     CREATION_DATE,
502     CREATED_BY,
503     LAST_UPDATE_DATE,
504     LAST_UPDATED_BY,
505     LAST_UPDATE_LOGIN,
506     LANGUAGE,
507     SOURCE_LANG
508   ) select
509     B.HISTORY_ID,
510     B.NAME,
511     B.DESCRIPTION,
512     B.CREATION_DATE,
513     B.CREATED_BY,
514     B.LAST_UPDATE_DATE,
515     B.LAST_UPDATED_BY,
516     B.LAST_UPDATE_LOGIN,
517     L.LANGUAGE_CODE,
518     B.SOURCE_LANG
519   from CS_KB_HISTORIES_TL B, FND_LANGUAGES L
520   where L.INSTALLED_FLAG in ('I', 'B')
521   and B.LANGUAGE = userenv('LANG')
522   and not exists
523     (select NULL
524     from CS_KB_HISTORIES_TL T
525     where T.HISTORY_ID = B.HISTORY_ID
526     and T.LANGUAGE = L.LANGUAGE_CODE);
527 end ADD_LANGUAGE;
528 
529 procedure TRANSLATE_ROW (
530      X_HISTORY_ID		  	in 	VARCHAR2,
531      X_NAME	 			in	VARCHAR2,
532      X_DESCRIPTION 	 		in   	VARCHAR2,
533      X_OWNER				in	VARCHAR2
534 ) is
535 begin
536      update CS_KB_HISTORIES_TL set
537 	NAME = X_NAME,
538 	DESCRIPTION=X_DESCRIPTION,
539 	last_update_date  = sysdate,
540      last_updated_by   = decode(X_OWNER, 'SEED', 1, 0),
541      last_update_login = 0,
542      source_lang       = userenv('LANG')
543       where HISTORY_ID = to_number(X_HISTORY_ID)
544       and userenv('LANG') in (language, source_lang);
545 end TRANSLATE_ROW;
546 
547 end CS_KB_HISTORIES_PKG;