[Home] [Help]
PACKAGE BODY: APPS.GR_SAFETY_PHRASES_TL_PKG
Source
1 PACKAGE BODY GR_SAFETY_PHRASES_TL_PKG AS
2 /*$Header: GRHISPTB.pls 120.1 2006/06/16 21:41:50 pbamb noship $*/
3 PROCEDURE Insert_Row
4 (p_commit IN VARCHAR2,
5 p_called_by_form IN VARCHAR2,
6 p_safety_phrase_code IN VARCHAR2,
7 p_language IN VARCHAR2,
8 p_source_language IN VARCHAR2,
9 p_safety_phrase_description IN VARCHAR2,
10 p_created_by IN NUMBER,
11 p_creation_date IN DATE,
12 p_last_updated_by IN NUMBER,
13 p_last_update_date IN DATE,
14 p_last_update_login IN NUMBER,
15 x_rowid OUT NOCOPY VARCHAR2,
16 x_return_status OUT NOCOPY VARCHAR2,
17 x_oracle_error OUT NOCOPY NUMBER,
18 x_msg_data OUT NOCOPY VARCHAR2)
19 IS
20 /* Alpha Variables */
21
22 L_RETURN_STATUS VARCHAR2(1) := 'S';
23 L_KEY_EXISTS VARCHAR2(1);
24 L_MSG_DATA VARCHAR2(2000);
25 L_ROWID VARCHAR2(18);
26 L_MSG_TOKEN VARCHAR2(100);
27
28 /* Number Variables */
29
30 L_ORACLE_ERROR NUMBER;
31 /* Exceptions */
32
33 FOREIGN_KEY_ERROR EXCEPTION;
34 ITEM_EXISTS_ERROR EXCEPTION;
35 ROW_MISSING_ERROR EXCEPTION;
36
37 /* Declare cursors */
38
39
40 BEGIN
41
42 /* Initialization Routine */
43
44 SAVEPOINT Insert_Row;
45 x_return_status := 'S';
46 x_oracle_error := 0;
47 x_msg_data := NULL;
48
49 /* Now call the check foreign key procedure */
50
51 Check_Foreign_Keys
52 (p_safety_phrase_code,
53 p_language,
54 p_source_language,
55 p_safety_phrase_description,
56 l_return_status,
57 l_oracle_error,
58 l_msg_data);
59 IF l_return_status <> 'S' THEN
60 RAISE Foreign_Key_Error;
61 END IF;
62
63 /* Now check the primary key doesn't already exist */
64
65 Check_Primary_Key
66 (p_safety_phrase_code,
67 p_language,
68 'F',
69 l_rowid,
70 l_key_exists);
71
72 IF FND_API.To_Boolean(l_key_exists) THEN
73 RAISE Item_Exists_Error;
74 END IF;
75
76 INSERT INTO gr_safety_phrases_tl
77 (safety_phrase_code,
78 language,
79 source_lang,
80 safety_phrase_description,
81 created_by,
82 creation_date,
83 last_updated_by,
84 last_update_date,
85 last_update_login)
86 VALUES
87 (p_safety_phrase_code,
88 p_language,
89 p_source_language,
90 p_safety_phrase_description,
91 p_created_by,
92 p_creation_date,
93 p_last_updated_by,
94 p_last_update_date,
95 p_last_update_login);
96
97 /* Now get the row id of the inserted record */
98
99 Check_Primary_Key
100 (p_safety_phrase_code,
101 p_language,
102 'F',
103 l_rowid,
104 l_key_exists);
105
106 IF FND_API.To_Boolean(l_key_exists) THEN
107 x_rowid := l_rowid;
108 ELSE
109 RAISE Row_Missing_Error;
110 END IF;
111
112 /* Check the commit flag and if set, then commit the work. */
113
114 IF FND_API.To_Boolean(p_commit) THEN
115 COMMIT WORK;
116 END IF;
117
118 EXCEPTION
119
120 WHEN Foreign_Key_Error THEN
121 ROLLBACK TO SAVEPOINT Insert_Row;
122 x_return_status := l_return_status;
123 x_oracle_error := l_oracle_error;
124 FND_MESSAGE.SET_NAME('GR',
125 'GR_FOREIGN_KEY_ERROR');
126 FND_MESSAGE.SET_TOKEN('TEXT',
127 l_msg_data,
128 FALSE);
129 IF FND_API.To_Boolean(p_called_by_form) THEN
130 APP_EXCEPTION.Raise_Exception;
131 ELSE
132 x_msg_data := FND_MESSAGE.Get;
133 END IF;
134
135 WHEN Item_Exists_Error THEN
136 ROLLBACK TO SAVEPOINT Insert_Row;
137 l_msg_token := p_safety_phrase_code || ' ' || p_language;
138 x_return_status := 'E';
139 x_oracle_error := APP_EXCEPTION.Get_Code;
140 FND_MESSAGE.SET_NAME('GR',
141 'GR_RECORD_EXISTS');
142 FND_MESSAGE.SET_TOKEN('CODE',
143 l_msg_token,
144 FALSE);
145 IF FND_API.To_Boolean(p_called_by_form) THEN
146 APP_EXCEPTION.Raise_Exception;
147 ELSE
148 x_msg_data := FND_MESSAGE.Get;
149 END IF;
150
151 WHEN Row_Missing_Error THEN
152 ROLLBACK TO SAVEPOINT Insert_Row;
153 l_msg_token := p_safety_phrase_code || ' ' || p_language;
154 x_return_status := 'E';
155 x_oracle_error := APP_EXCEPTION.Get_Code;
156 FND_MESSAGE.SET_NAME('GR',
157 'GR_NO_RECORD_INSERTED');
158 FND_MESSAGE.SET_TOKEN('CODE',
159 l_msg_token,
160 FALSE);
161 IF FND_API.To_Boolean(p_called_by_form) THEN
162 APP_EXCEPTION.Raise_Exception;
163 ELSE
164 x_msg_data := FND_MESSAGE.Get;
165 END IF;
166
167 WHEN OTHERS THEN
168 ROLLBACK TO SAVEPOINT Insert_Row;
169 l_msg_token := p_safety_phrase_code || ' ' || p_language;
170 x_return_status := 'U';
171 x_oracle_error := SQLCODE;
172 l_msg_data := SUBSTR(SQLERRM, 1, 200);
173 FND_MESSAGE.SET_NAME('GR',
174 'GR_UNEXPECTED_ERROR');
175 FND_MESSAGE.SET_TOKEN('TEXT',
176 l_msg_token,
177 FALSE);
178 IF FND_API.To_Boolean(p_called_by_form) THEN
179 APP_EXCEPTION.Raise_Exception;
180 ELSE
181 x_msg_data := FND_MESSAGE.Get;
182 END IF;
183
184 END Insert_Row;
185
186 PROCEDURE Update_Row
187 (p_commit IN VARCHAR2,
188 p_called_by_form IN VARCHAR2,
189 p_rowid IN VARCHAR2,
190 p_safety_phrase_code IN VARCHAR2,
191 p_language IN VARCHAR2,
192 p_source_language IN VARCHAR2,
193 p_safety_phrase_description IN VARCHAR2,
194 p_created_by IN NUMBER,
195 p_creation_date IN DATE,
196 p_last_updated_by IN NUMBER,
197 p_last_update_date IN DATE,
198 p_last_update_login IN NUMBER,
199 x_return_status OUT NOCOPY VARCHAR2,
200 x_oracle_error OUT NOCOPY NUMBER,
201 x_msg_data OUT NOCOPY VARCHAR2)
202 IS
203
204 /* Alpha Variables */
205
206 L_RETURN_STATUS VARCHAR2(1) := 'S';
207 L_MSG_DATA VARCHAR2(2000);
208 L_MSG_TOKEN VARCHAR2(100);
209
210 /* Number Variables */
211
212 L_ORACLE_ERROR NUMBER;
213
214 /* Exceptions */
215
216 FOREIGN_KEY_ERROR EXCEPTION;
217 ROW_MISSING_ERROR EXCEPTION;
218
219 BEGIN
220
221 /* Initialization Routine */
222
223 SAVEPOINT Update_Row;
224 x_return_status := 'S';
225 x_oracle_error := 0;
226 x_msg_data := NULL;
227 l_msg_token := p_safety_phrase_code || ' ' || p_language;
228
229 /* Now call the check foreign key procedure */
230
231 Check_Foreign_Keys
232 (p_safety_phrase_code,
233 p_language,
234 p_source_language,
235 p_safety_phrase_description,
236 l_return_status,
237 l_oracle_error,
238 l_msg_data);
239
240 IF l_return_status <> 'S' THEN
241 RAISE Foreign_Key_Error;
242 ELSE
243 UPDATE gr_safety_phrases_tl
244 SET safety_phrase_code = p_safety_phrase_code,
245 language = p_language,
246 source_lang = p_source_language,
247 safety_phrase_description = p_safety_phrase_description,
248 created_by = p_created_by,
249 creation_date = p_creation_date,
250 last_updated_by = p_last_updated_by,
251 last_update_date = p_last_update_date,
252 last_update_login = p_last_update_login
253 WHERE rowid = p_rowid;
254 IF SQL%NOTFOUND THEN
255 RAISE Row_Missing_Error;
256 END IF;
257 END IF;
258
259 /* Check the commit flag and if set, then commit the work. */
260
261 IF FND_API.To_Boolean(p_commit) THEN
262 COMMIT WORK;
263 END IF;
264
265 EXCEPTION
266
267 WHEN Foreign_Key_Error THEN
268 ROLLBACK TO SAVEPOINT Update_Row;
269 x_return_status := l_return_status;
270 x_oracle_error := l_oracle_error;
271 FND_MESSAGE.SET_NAME('GR',
272 'GR_FOREIGN_KEY_ERROR');
273 FND_MESSAGE.SET_TOKEN('TEXT',
274 l_msg_data,
275 FALSE);
276 IF FND_API.To_Boolean(p_called_by_form) THEN
277 APP_EXCEPTION.Raise_Exception;
278 ELSE
279 x_msg_data := FND_MESSAGE.Get;
280 END IF;
281
282 WHEN Row_Missing_Error THEN
283 ROLLBACK TO SAVEPOINT Update_Row;
284 x_return_status := 'E';
285 x_oracle_error := APP_EXCEPTION.Get_Code;
286 FND_MESSAGE.SET_NAME('GR',
287 'GR_NO_RECORD_INSERTED');
288 FND_MESSAGE.SET_TOKEN('CODE',
289 l_msg_token,
290 FALSE);
291 IF FND_API.To_Boolean(p_called_by_form) THEN
292 APP_EXCEPTION.Raise_Exception;
293 ELSE
294 x_msg_data := FND_MESSAGE.Get;
295 END IF;
296
297 WHEN OTHERS THEN
298 ROLLBACK TO SAVEPOINT Update_Row;
299 x_return_status := 'U';
300 x_oracle_error := SQLCODE;
301 l_msg_data := SUBSTR(SQLERRM, 1, 200);
302 FND_MESSAGE.SET_NAME('GR',
303 'GR_UNEXPECTED_ERROR');
304 FND_MESSAGE.SET_TOKEN('TEXT',
305 l_msg_token,
306 FALSE);
307 IF FND_API.To_Boolean(p_called_by_form) THEN
308 APP_EXCEPTION.Raise_Exception;
309 ELSE
310 x_msg_data := FND_MESSAGE.Get;
311 END IF;
312
313 END Update_Row;
314
315 PROCEDURE Add_Language
316 (p_commit IN VARCHAR2,
317 p_called_by_form IN VARCHAR2,
318 p_safety_phrase_code IN VARCHAR2,
319 p_language IN VARCHAR2,
320 x_return_status OUT NOCOPY VARCHAR2,
321 x_oracle_error OUT NOCOPY NUMBER,
322 x_msg_data OUT NOCOPY VARCHAR2)
323 IS
324
325 /* Alpha Variables */
326
327 L_RETURN_STATUS VARCHAR2(1) := 'S';
328 L_MSG_DATA VARCHAR2(2000);
329 L_MSG_TOKEN VARCHAR2(100);
330 L_BASE_DESC VARCHAR2(240);
331 L_LANGUAGE VARCHAR2(4);
332 L_CREATION_DATE DATE;
333 L_LAST_UPDATE_DATE DATE;
334
335 /* Number Variables */
336
337 L_ORACLE_ERROR NUMBER;
338 L_CREATED_BY NUMBER;
339 L_LAST_UPDATED_BY NUMBER;
340 L_LAST_UPDATE_LOGIN NUMBER;
341
342 /* Exceptions */
343
344 LANGUAGE_MISSING_ERROR EXCEPTION;
345
346
347 /* Cursors */
348
349 CURSOR c_get_descs
350 IS
351 SELECT spt.safety_phrase_description,
352 spt.created_by,
353 spt.creation_date,
354 spt.last_updated_by,
355 spt.last_update_date,
356 spt.last_update_login
357 FROM gr_safety_phrases_tl spt
358 WHERE spt.safety_phrase_code = p_safety_phrase_code
359 AND spt.language = l_language;
360 PhraseDesc c_get_descs%ROWTYPE;
361
362 CURSOR c_get_installed_languages
363 IS
364 SELECT lng.language_code
365 FROM fnd_languages lng
366 WHERE lng.installed_flag IN ('I', 'B');
367 InstLang c_get_installed_languages%ROWTYPE;
368
369
370 BEGIN
371
372 /* Initialization Routine */
373
374 SAVEPOINT Add_Language;
375 x_return_status := 'S';
376 x_oracle_error := 0;
377 x_msg_data := NULL;
378 l_msg_token := p_safety_phrase_code || ' ' || p_language;
379
380 /* Remove translations with no base row */
381
382 delete from GR_SAFETY_PHRASES_TL T
383 where not exists
384 (select NULL
385 from GR_SAFETY_PHRASES_B B
386 where B.SAFETY_PHRASE_CODE = T.SAFETY_PHRASE_CODE
387 );
388
389 /* Redefault translations from the source language */
390
391 update gr_safety_phrases_tl t set (
392 safety_phrase_description ) =
393 ( select
394 B.SAFETY_PHRASE_DESCRIPTION
395 from GR_SAFETY_PHRASES_TL B
396 where B.SAFETY_PHRASE_CODE = T.SAFETY_PHRASE_CODE
397 and B.LANGUAGE = T.SOURCE_LANG)
398 where (
399 T.SAFETY_PHRASE_CODE,
400 T.LANGUAGE
401 ) in (select
402 SUBT.SAFETY_PHRASE_CODE,
403 SUBT.LANGUAGE
404 from GR_SAFETY_PHRASES_TL SUBB, GR_SAFETY_PHRASES_TL SUBT
405 where SUBB.SAFETY_PHRASE_CODE = SUBT.SAFETY_PHRASE_CODE
406 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
407 and (SUBB.SAFETY_PHRASE_DESCRIPTION <> SUBT.SAFETY_PHRASE_DESCRIPTION
408 or (SUBB.SAFETY_PHRASE_DESCRIPTION is null and SUBT.SAFETY_PHRASE_DESCRIPTION is not null)
409 or (SUBB.SAFETY_PHRASE_DESCRIPTION is not null and SUBT.SAFETY_PHRASE_DESCRIPTION is null)
410 ));
411
412
413
414 /* Open the language cursor and get the description entered from the
415 ** user environment variable.
416 */
417 l_language := p_language;
418 OPEN c_get_descs;
419 FETCH c_get_descs INTO PhraseDesc;
420 IF c_get_descs%NOTFOUND THEN
421 CLOSE c_get_descs;
422 RAISE Language_Missing_Error;
423 ELSE
424 l_base_desc := PhraseDesc.safety_phrase_description;
425 l_created_by := PhraseDesc.created_by;
426 l_creation_date := PhraseDesc.creation_date;
427 l_last_updated_by := PhraseDesc.last_updated_by;
428 l_last_update_date := PhraseDesc.last_update_date;
429 l_last_update_login := PhraseDesc.last_update_login;
430 CLOSE c_get_descs;
431 END IF;
432
433 /* Read fnd_languages for the installed and base languages.
434 ** For those that are found, read the safety phrase tl table.
435 ** If there isn't a record in the table for that language then
436 ** insert it and go on to the next.
437 */
438 OPEN c_get_installed_languages;
439 FETCH c_get_installed_languages INTO InstLang;
440 IF c_get_installed_languages%FOUND THEN
441 WHILE c_get_installed_languages%FOUND LOOP
442 IF InstLang.language_code <> p_language THEN
443 l_language := InstLang.language_code;
444 OPEN c_get_descs;
445 FETCH c_get_descs INTO PhraseDesc;
446 IF c_get_descs%NOTFOUND THEN
447 CLOSE c_get_descs;
448 INSERT INTO gr_safety_phrases_tl
449 (safety_phrase_code,
450 language,
451 source_lang,
452 safety_phrase_description,
453 created_by,
454 creation_date,
455 last_updated_by,
456 last_update_date,
457 last_update_login)
458 VALUES
459 (p_safety_phrase_code,
460 l_language,
461 p_language,
462 l_base_desc,
463 l_created_by,
464 l_creation_date,
465 l_last_updated_by,
466 l_last_update_date,
467 l_last_update_login);
468 ELSE
469 CLOSE c_get_descs;
470 END IF;
471 END IF;
472 FETCH c_get_installed_languages INTO InstLang;
473 END LOOP;
474 END IF;
475 CLOSE c_get_installed_languages;
476
477 IF FND_API.To_Boolean(p_commit) THEN
478 COMMIT WORK;
479 END IF;
480
481 EXCEPTION
482
483 WHEN Language_Missing_Error THEN
484 ROLLBACK TO SAVEPOINT Add_Language;
485 x_return_status := 'E';
486 x_oracle_error := APP_EXCEPTION.Get_Code;
487 FND_MESSAGE.SET_NAME('GR',
488 'GR_RECORD_NOT_FOUND');
489 FND_MESSAGE.SET_TOKEN('CODE',
490 l_msg_token,
491 FALSE);
492 IF FND_API.To_Boolean(p_called_by_form) THEN
493 APP_EXCEPTION.Raise_Exception;
494 ELSE
495 x_msg_data := FND_MESSAGE.Get;
496 END IF;
497
498 WHEN OTHERS THEN
499 ROLLBACK TO SAVEPOINT Add_Language;
500 x_return_status := 'U';
501 x_oracle_error := SQLCODE;
502 l_msg_data := SUBSTR(SQLERRM, 1, 200);
503 FND_MESSAGE.SET_NAME('GR',
504 'GR_UNEXPECTED_ERROR');
505 FND_MESSAGE.SET_TOKEN('TEXT',
506 l_msg_token,
507 FALSE);
508 IF FND_API.To_Boolean(p_called_by_form) THEN
509 APP_EXCEPTION.Raise_Exception;
510 ELSE
511 x_msg_data := FND_MESSAGE.Get;
512 END IF;
513
514 END Add_Language;
515
516 PROCEDURE Lock_Row
517 (p_commit IN VARCHAR2,
518 p_called_by_form IN VARCHAR2,
519 p_rowid IN VARCHAR2,
520 p_safety_phrase_code IN VARCHAR2,
521 p_language IN VARCHAR2,
522 p_source_language IN VARCHAR2,
523 p_safety_phrase_description IN VARCHAR2,
524 p_created_by IN NUMBER,
525 p_creation_date IN DATE,
526 p_last_updated_by IN NUMBER,
527 p_last_update_date IN DATE,
528 p_last_update_login IN NUMBER,
529 x_return_status OUT NOCOPY VARCHAR2,
530 x_oracle_error OUT NOCOPY NUMBER,
531 x_msg_data OUT NOCOPY VARCHAR2)
532 IS
533
534 /* Alpha Variables */
535
536 L_RETURN_STATUS VARCHAR2(1) := 'S';
537 L_MSG_DATA VARCHAR2(2000);
538 L_MSG_TOKEN VARCHAR2(100);
539
540 /* Number Variables */
541
542 L_ORACLE_ERROR NUMBER;
543
544 /* Exceptions */
545
546 NO_DATA_FOUND_ERROR EXCEPTION;
547 RECORD_CHANGED_ERROR EXCEPTION;
548
549 /* Define the cursors */
550
551 CURSOR c_lock_safety_tl
552 IS
553 SELECT last_update_date
554 FROM gr_safety_phrases_tl
555 WHERE rowid = p_rowid
556 FOR UPDATE NOWAIT;
557 LockSafetyRcd c_lock_safety_tl%ROWTYPE;
558 BEGIN
559
560 /* Initialization Routine */
561
562 SAVEPOINT Lock_Row;
563 x_return_status := 'S';
564 x_oracle_error := 0;
565 x_msg_data := NULL;
566 l_msg_token := p_safety_phrase_code || ' ' || p_language;
567
568 /* Now lock the record */
569
570 OPEN c_lock_safety_tl;
571 FETCH c_lock_safety_tl INTO LockSafetyRcd;
572 IF c_lock_safety_tl%NOTFOUND THEN
573 CLOSE c_lock_safety_tl;
574 RAISE No_Data_Found_Error;
575 END IF;
576 CLOSE c_lock_safety_tl;
577
578 IF LockSafetyRcd.last_update_date <> p_last_update_date THEN
579 RAISE RECORD_CHANGED_ERROR;
580 END IF;
581
582 IF FND_API.To_Boolean(p_commit) THEN
583 COMMIT WORK;
584 END IF;
585
586 EXCEPTION
587
588 WHEN No_Data_Found_Error THEN
589 ROLLBACK TO SAVEPOINT Lock_Row;
590 x_return_status := 'E';
591 FND_MESSAGE.SET_NAME('GR',
592 'GR_RECORD_NOT_FOUND');
593 FND_MESSAGE.SET_TOKEN('CODE',
594 l_msg_token,
595 FALSE);
596 IF FND_API.To_Boolean(p_called_by_form) THEN
597 APP_EXCEPTION.Raise_Exception;
598 ELSE
599 x_msg_data := FND_MESSAGE.Get;
600 END IF;
601
602 WHEN RECORD_CHANGED_ERROR THEN
603 ROLLBACK TO SAVEPOINT Lock_Row;
604 X_return_status := 'E';
605 FND_MESSAGE.SET_NAME('FND',
606 'FORM_RECORD_CHANGED');
607 IF FND_API.To_Boolean(p_called_by_form) THEN
608 APP_EXCEPTION.Raise_Exception;
609 ELSE
610 x_msg_data := FND_MESSAGE.Get;
611 END IF;
612 WHEN APP_EXCEPTION.RECORD_LOCK_EXCEPTION THEN
613 ROLLBACK TO SAVEPOINT Lock_Row;
614 x_return_status := 'L';
615 x_oracle_error := APP_EXCEPTION.Get_Code;
616 IF NOT (FND_API.To_Boolean(p_called_by_form)) THEN
617 FND_MESSAGE.SET_NAME('GR',
618 'GR_ROW_IS_LOCKED');
619 x_msg_data := FND_MESSAGE.Get;
620 END IF;
621
622
623 WHEN OTHERS THEN
624 ROLLBACK TO SAVEPOINT Lock_Row;
625 x_return_status := 'U';
626 x_oracle_error := SQLCODE;
627 l_msg_data := SUBSTR(SQLERRM, 1, 200);
628 FND_MESSAGE.SET_NAME('GR',
629 'GR_UNEXPECTED_ERROR');
630 FND_MESSAGE.SET_TOKEN('TEXT',
631 l_msg_token,
632 FALSE);
633 IF FND_API.To_Boolean(p_called_by_form) THEN
634 APP_EXCEPTION.Raise_Exception;
635 ELSE
636 x_msg_data := FND_MESSAGE.Get;
637 END IF;
638
639 END Lock_Row;
640
641 PROCEDURE Delete_Row
642 (p_commit IN VARCHAR2,
643 p_called_by_form IN VARCHAR2,
644 p_rowid IN VARCHAR2,
645 p_safety_phrase_code IN VARCHAR2,
646 p_language IN VARCHAR2,
647 p_source_language IN VARCHAR2,
648 p_safety_phrase_description IN VARCHAR2,
649 p_created_by IN NUMBER,
650 p_creation_date IN DATE,
651 p_last_updated_by IN NUMBER,
652 p_last_update_date IN DATE,
653 p_last_update_login IN NUMBER,
654 x_return_status OUT NOCOPY VARCHAR2,
655 x_oracle_error OUT NOCOPY NUMBER,
656 x_msg_data OUT NOCOPY VARCHAR2)
657 IS
658
659 /* Alpha Variables */
660
661 L_RETURN_STATUS VARCHAR2(1) := 'S';
662 L_MSG_DATA VARCHAR2(2000);
663 L_MSG_TOKEN VARCHAR2(100);
664 L_CALLED_BY_FORM VARCHAR2(1);
665
666 /* Number Variables */
667
668 L_ORACLE_ERROR NUMBER;
669
670 /* Exceptions */
671
672 CHECK_INTEGRITY_ERROR EXCEPTION;
673 ROW_MISSING_ERROR EXCEPTION;
674 PRAGMA EXCEPTION_INIT(Row_Missing_Error,100);
675
676 /* Define the cursors */
677
678 BEGIN
679
680 /* Initialization Routine */
681
682 SAVEPOINT Delete_Row;
683 x_return_status := 'S';
684 l_called_by_form := 'F';
685 x_oracle_error := 0;
686 x_msg_data := NULL;
687 l_msg_token := p_safety_phrase_code || ' ' || p_language;
688
689 /* Now call the check integrity procedure */
690
691 Check_Integrity
692 (l_called_by_form,
693 p_safety_phrase_code,
694 p_language,
695 p_source_language,
696 p_safety_phrase_description,
697 l_return_status,
698 l_oracle_error,
699 l_msg_data);
700
701 IF l_return_status <> 'S' THEN
702 RAISE Check_Integrity_Error;
703 END IF;
704
705 DELETE FROM gr_safety_phrases_tl
706 WHERE rowid = p_rowid;
707
708 /* Check the commit flag and if set, then commit the work. */
709
710 IF FND_API.TO_Boolean(p_commit) THEN
711 COMMIT WORK;
712 END IF;
713
714 EXCEPTION
715
716 WHEN Check_Integrity_Error THEN
717 ROLLBACK TO SAVEPOINT Delete_Row;
718 x_return_status := l_return_status;
719 x_oracle_error := l_oracle_error;
720 x_msg_data := l_msg_data;
721 IF FND_API.To_Boolean(p_called_by_form) THEN
722 APP_EXCEPTION.Raise_Exception;
723 ELSE
724 x_msg_data := FND_MESSAGE.Get;
725 END IF;
726
727 WHEN Row_Missing_Error THEN
728 ROLLBACK TO SAVEPOINT Delete_Row;
729 x_return_status := 'E';
730 x_oracle_error := APP_EXCEPTION.Get_Code;
731 FND_MESSAGE.SET_NAME('GR',
732 'GR_RECORD_NOT_FOUND');
733 FND_MESSAGE.SET_TOKEN('CODE',
734 l_msg_token,
735 FALSE);
736 IF FND_API.To_Boolean(p_called_by_form) THEN
737 APP_EXCEPTION.Raise_Exception;
738 ELSE
739 x_msg_data := FND_MESSAGE.Get;
740 END IF;
741
742 WHEN OTHERS THEN
743 ROLLBACK TO SAVEPOINT Delete_Row;
744 x_return_status := 'U';
745 x_oracle_error := SQLCODE;
746 l_msg_data := SUBSTR(SQLERRM, 1, 200);
747 FND_MESSAGE.SET_NAME('GR',
748 'GR_UNEXPECTED_ERROR');
749 FND_MESSAGE.SET_TOKEN('TEXT',
750 l_msg_token,
751 FALSE);
752 IF FND_API.To_Boolean(p_called_by_form) THEN
753 APP_EXCEPTION.Raise_Exception;
754 ELSE
755 x_msg_data := FND_MESSAGE.Get;
756 END IF;
757
758 END Delete_Row;
759
760 PROCEDURE Delete_Rows
761 (p_commit IN VARCHAR2,
762 p_called_by_form IN VARCHAR2,
763 p_safety_phrase_code IN VARCHAR2,
764 x_return_status OUT NOCOPY VARCHAR2,
765 x_oracle_error OUT NOCOPY NUMBER,
766 x_msg_data OUT NOCOPY VARCHAR2)
767 IS
768
769 /* Alpha Variables */
770
771 L_RETURN_STATUS VARCHAR2(1) := 'S';
772 L_MSG_DATA VARCHAR2(2000);
773 L_MSG_TOKEN VARCHAR2(100);
774
775 /* Number Variables */
776
777 L_ORACLE_ERROR NUMBER;
778
779 /* Define the cursors */
780
781 BEGIN
782
783 /* Initialization Routine */
784
785 SAVEPOINT Delete_Rows;
786 x_return_status := 'S';
787 x_oracle_error := 0;
788 x_msg_data := NULL;
789 l_msg_token := p_safety_phrase_code;
790
791 DELETE FROM gr_safety_phrases_tl
792 WHERE safety_phrase_code = p_safety_phrase_code;
793
794 IF FND_API.To_Boolean(p_commit) THEN
795 COMMIT WORK;
796 END IF;
797
798 EXCEPTION
799
800 WHEN OTHERS THEN
801 ROLLBACK TO SAVEPOINT Delete_Rows;
802 x_return_status := 'U';
803 x_oracle_error := SQLCODE;
804 l_msg_data := SUBSTR(SQLERRM, 1, 200);
805 FND_MESSAGE.SET_NAME('GR',
806 'GR_UNEXPECTED_ERROR');
807 FND_MESSAGE.SET_TOKEN('TEXT',
808 l_msg_token,
809 FALSE);
810 IF FND_API.To_Boolean(p_called_by_form) THEN
811 APP_EXCEPTION.Raise_Exception;
812 ELSE
813 x_msg_data := FND_MESSAGE.Get;
814 END IF;
815
816 END Delete_Rows;
817
818 PROCEDURE Check_Foreign_Keys
819 (p_safety_phrase_code IN VARCHAR2,
820 p_language IN VARCHAR2,
821 p_source_language IN VARCHAR2,
822 p_safety_phrase_description IN VARCHAR2,
823 x_return_status OUT NOCOPY VARCHAR2,
824 x_oracle_error OUT NOCOPY NUMBER,
825 x_msg_data OUT NOCOPY VARCHAR2)
826 IS
827
828 /* Alpha Variables */
829
830 L_RETURN_STATUS VARCHAR2(1) := 'S';
831 L_MSG_DATA VARCHAR2(2000);
832 L_MSG_TOKEN VARCHAR2(100);
833 L_LANGUAGE_CODE VARCHAR2(4);
834
835 /* Number Variables */
836
837 L_ORACLE_ERROR NUMBER;
838
839 /* Error Definitions */
840
841 ROW_MISSING_ERROR EXCEPTION;
842
843 /* Define the cursors */
844
845 CURSOR c_get_language
846 IS
847 SELECT lng.language_code
848 FROM fnd_languages lng
849 WHERE lng.language_code = l_language_code;
850 LangRecord c_get_language%ROWTYPE;
851
852 BEGIN
853
854 /* Initialization Routine */
855
856 SAVEPOINT Check_Foreign_Keys;
857 x_return_status := 'S';
858 x_oracle_error := 0;
859 x_msg_data := NULL;
860 l_msg_token := p_safety_phrase_code || ' ' || p_language;
861
862 /* Check the language codes */
863
864 l_language_code := p_language;
865 OPEN c_get_language;
866 FETCH c_get_language INTO LangRecord;
867 IF c_get_language%NOTFOUND THEN
868 CLOSE c_get_language;
869 l_msg_token := l_language_code;
870 RAISE Row_Missing_Error;
871 END IF;
872 CLOSE c_get_language;
873
874 l_language_code := p_source_language;
875 OPEN c_get_language;
876 FETCH c_get_language INTO LangRecord;
877 IF c_get_language%NOTFOUND THEN
878 CLOSE c_get_language;
879 l_msg_token := l_language_code;
880 RAISE Row_Missing_Error;
881 END IF;
882 CLOSE c_get_language;
883
884 EXCEPTION
885
886 WHEN Row_Missing_Error THEN
887 ROLLBACK TO SAVEPOINT Check_Foreign_Keys;
888 x_return_status := 'E';
889 x_oracle_error := APP_EXCEPTION.Get_Code;
890 FND_MESSAGE.SET_NAME('GR',
891 'GR_RECORD_NOT_FOUND');
892 FND_MESSAGE.SET_TOKEN('CODE',
893 l_msg_token,
894 FALSE);
895 x_msg_data := FND_MESSAGE.Get;
896
897 WHEN OTHERS THEN
898 ROLLBACK TO SAVEPOINT Check_Foreign_Keys;
899 x_return_status := 'U';
900 x_oracle_error := SQLCODE;
901 l_msg_data := SUBSTR(SQLERRM, 1, 200);
902 FND_MESSAGE.SET_NAME('GR',
903 'GR_UNEXPECTED_ERROR');
904 FND_MESSAGE.SET_TOKEN('TEXT',
905 l_msg_token,
906 FALSE);
907 x_msg_data := FND_MESSAGE.Get;
908
909 END Check_Foreign_Keys;
910
911 PROCEDURE Check_Integrity
912 (p_called_by_form IN VARCHAR2,
913 p_safety_phrase_code IN VARCHAR2,
914 p_language IN VARCHAR2,
915 p_source_language IN VARCHAR2,
916 p_safety_phrase_description IN VARCHAR2,
917 x_return_status OUT NOCOPY VARCHAR2,
918 x_oracle_error OUT NOCOPY NUMBER,
919 x_msg_data OUT NOCOPY VARCHAR2)
920 IS
921
922 /* Alpha Variables */
923
924 L_RETURN_STATUS VARCHAR2(1) := 'S';
925 L_MSG_DATA VARCHAR2(2000);
926 L_CODE_BLOCK VARCHAR2(30);
927
928 /* Number Variables */
929
930 L_ORACLE_ERROR NUMBER;
931 L_RECORD_COUNT NUMBER;
932
933 /* Exceptions */
934
935 INSTALLED_LANGUAGE_ERROR EXCEPTION;
936
937 /* Define the Cursors */
938
939 CURSOR c_get_language_code
940 IS
941 SELECT lng.installed_flag
942 FROM fnd_languages lng
943 WHERE lng.language_code = p_language
944 AND lng.installed_flag IN ('B', 'I');
945 LangRecord c_get_language_code%ROWTYPE;
946
947 BEGIN
948
949 /* Initialization Routine */
950
951 SAVEPOINT Check_Integrity;
952 x_return_status := 'S';
953 x_oracle_error := 0;
954 x_msg_data := NULL;
955
956 /* Check the language isn't base or installed */
957
958 OPEN c_get_language_code;
959 FETCH c_get_language_code INTO LangRecord;
960 IF c_get_language_code%FOUND THEN
961 CLOSE c_get_language_code;
962 RAISE Installed_Language_Error;
963 END IF;
964 CLOSE c_get_language_code;
965
966 EXCEPTION
967
968 WHEN Installed_Language_Error THEN
969 ROLLBACK TO SAVEPOINT Check_Integrity;
970 x_return_status := 'E';
971 FND_MESSAGE.SET_NAME('GR',
972 'GR_INSTALLED_LANG');
973 FND_MESSAGE.SET_TOKEN('CODE',
974 p_language,
975 FALSE);
976 IF FND_API.To_Boolean(p_called_by_form) THEN
977 APP_EXCEPTION.Raise_Exception;
978 ELSE
979 x_msg_data := FND_MESSAGE.Get;
980 END IF;
981
982 WHEN OTHERS THEN
983 ROLLBACK TO SAVEPOINT Check_Integrity;
984 x_return_status := 'U';
985 x_oracle_error := SQLCODE;
986 l_msg_data := SUBSTR(SQLERRM, 1, 200);
987 FND_MESSAGE.SET_NAME('GR',
988 'GR_UNEXPECTED_ERROR');
989 FND_MESSAGE.SET_TOKEN('TEXT',
990 l_msg_data,
991 FALSE);
992 IF FND_API.To_Boolean(p_called_by_form) THEN
993 APP_EXCEPTION.Raise_Exception;
994 ELSE
995 x_msg_data := FND_MESSAGE.Get;
996 END IF;
997
998 END Check_Integrity;
999
1000 PROCEDURE Check_Primary_Key
1001 /* p_safety_phrase_code is the safety phrase code to check.
1002 ** p_language is the language code part of the key
1003 ** p_called_by_form is 'T' if called by a form or 'F' if not.
1004 ** x_rowid is the row id of the record if found.
1005 ** x_key_exists is 'T' is the record is found, 'F' if not.
1006 */
1007 (p_safety_phrase_code IN VARCHAR2,
1008 p_language IN VARCHAR2,
1009 p_called_by_form IN VARCHAR2,
1010 x_rowid OUT NOCOPY VARCHAR2,
1011 x_key_exists OUT NOCOPY VARCHAR2)
1012 IS
1013 /* Alphanumeric variables */
1014
1015 L_MSG_DATA VARCHAR2(80);
1016
1017 /* Declare any variables and the cursor */
1018
1019
1020 CURSOR c_get_safety_tl_rowid
1021 IS
1022 SELECT spt.rowid
1023 FROM gr_safety_phrases_tl spt
1024 WHERE spt.safety_phrase_code = p_safety_phrase_code
1025 AND spt.language = p_language;
1026 SafetyTLRecord c_get_safety_tl_rowid%ROWTYPE;
1027
1028 BEGIN
1029
1030 l_msg_data := p_safety_phrase_code || ' ' || p_language;
1031
1032 x_key_exists := 'F';
1033 OPEN c_get_safety_tl_rowid;
1034 FETCH c_get_safety_tl_rowid INTO SafetyTLRecord;
1035 IF c_get_safety_tl_rowid%FOUND THEN
1036 x_key_exists := 'T';
1037 x_rowid := SafetyTLRecord.rowid;
1038 ELSE
1039 x_key_exists := 'F';
1040 END IF;
1041 CLOSE c_get_safety_tl_rowid;
1042
1043 EXCEPTION
1044
1045 WHEN Others THEN
1046 l_msg_data := SQLCODE;
1047 FND_MESSAGE.SET_NAME('GR',
1048 'GR_UNEXPECTED_ERROR');
1049 FND_MESSAGE.SET_TOKEN('TEXT',
1050 l_msg_data,
1051 FALSE);
1052 IF FND_API.To_Boolean(p_called_by_form) THEN
1053 APP_EXCEPTION.Raise_Exception;
1054 END IF;
1055
1056 END Check_Primary_Key;
1057
1058 PROCEDURE translate_row (
1059 X_SAFETY_PHRASE_CODE IN VARCHAR2
1060 ,X_LANGUAGE IN VARCHAR2
1061 ,X_SOURCE_LANG IN VARCHAR2
1062 ,X_SAFETY_PHRASE_DESCRIPTION IN VARCHAR2
1063 ) IS
1064 BEGIN
1065 UPDATE GR_SAFETY_PHRASES_TL SET
1066 SAFETY_PHRASE_DESCRIPTION = X_SAFETY_PHRASE_DESCRIPTION,
1067 SOURCE_LANG = USERENV('LANG'),
1068 LAST_UPDATE_DATE = sysdate,
1069 LAST_UPDATED_BY = 0,
1070 LAST_UPDATE_LOGIN = 0
1071 WHERE (SAFETY_PHRASE_CODE = X_SAFETY_PHRASE_CODE)
1072 AND (USERENV('LANG') IN (LANGUAGE, SOURCE_LANG));
1073 END TRANSLATE_ROW;
1074
1075 /*Bug# 5237433 */
1076 PROCEDURE translate_row (
1077 X_SAFETY_PHRASE_CODE IN VARCHAR2
1078 ,X_SAFETY_PHRASE_DESCRIPTION IN VARCHAR2
1079 ,X_OWNER IN VARCHAR2
1080 ) IS
1081 BEGIN
1082 UPDATE GR_SAFETY_PHRASES_TL SET
1083 SAFETY_PHRASE_DESCRIPTION = X_SAFETY_PHRASE_DESCRIPTION,
1084 SOURCE_LANG = USERENV('LANG'),
1085 LAST_UPDATE_DATE = sysdate,
1086 LAST_UPDATED_BY = Decode(X_OWNER, 'SEED', 1, 0),
1087 LAST_UPDATE_LOGIN = 0
1088 WHERE (SAFETY_PHRASE_CODE = X_SAFETY_PHRASE_CODE)
1089 AND (USERENV('LANG') IN (LANGUAGE, SOURCE_LANG));
1090 END TRANSLATE_ROW;
1091
1092 PROCEDURE load_row (
1093 X_SAFETY_PHRASE_CODE IN VARCHAR2
1094 ,X_LANGUAGE IN VARCHAR2
1095 ,X_SOURCE_LANG IN VARCHAR2
1096 ,X_SAFETY_PHRASE_DESCRIPTION IN VARCHAR2
1097 ) IS
1098 CURSOR Cur_rowid IS
1099 SELECT rowid
1100 FROM GR_SAFETY_PHRASES_TL
1101 WHERE (SAFETY_PHRASE_CODE = X_SAFETY_PHRASE_CODE)
1102 AND (LANGUAGE = X_LANGUAGE);
1103 l_user_id NUMBER DEFAULT 1;
1104 l_row_id VARCHAR2(64);
1105 l_return_status VARCHAR2(1);
1106 l_oracle_error NUMBER;
1107 l_msg_data VARCHAR2(2000);
1108 BEGIN
1109 OPEN Cur_rowid;
1110 FETCH Cur_rowid INTO l_row_id;
1111 IF Cur_rowid%FOUND THEN
1112 GR_SAFETY_PHRASES_TL_PKG.UPDATE_ROW(
1113 P_COMMIT => 'T'
1114 ,P_CALLED_BY_FORM => 'F'
1115 ,P_ROWID => l_row_id
1116 ,P_SAFETY_PHRASE_CODE => X_SAFETY_PHRASE_CODE
1117 ,P_LANGUAGE => X_LANGUAGE
1118 ,P_SOURCE_LANGUAGE => X_SOURCE_LANG
1119 ,P_SAFETY_PHRASE_DESCRIPTION => X_SAFETY_PHRASE_DESCRIPTION
1120 ,P_CREATED_BY => l_user_id
1121 ,P_CREATION_DATE => sysdate
1122 ,P_LAST_UPDATED_BY => l_user_id
1123 ,P_LAST_UPDATE_DATE => sysdate
1124 ,P_LAST_UPDATE_LOGIN => 0
1125 ,X_RETURN_STATUS => l_return_status
1126 ,X_ORACLE_ERROR => l_oracle_error
1127 ,X_MSG_DATA => l_msg_data);
1128 ELSE
1129 GR_SAFETY_PHRASES_TL_PKG.INSERT_ROW(
1130 P_COMMIT => 'T'
1131 ,P_CALLED_BY_FORM => 'F'
1132 ,P_SAFETY_PHRASE_CODE => X_SAFETY_PHRASE_CODE
1133 ,P_LANGUAGE => X_LANGUAGE
1134 ,P_SOURCE_LANGUAGE => X_SOURCE_LANG
1135 ,P_SAFETY_PHRASE_DESCRIPTION => X_SAFETY_PHRASE_DESCRIPTION
1136 ,P_CREATED_BY => l_user_id
1137 ,P_CREATION_DATE => sysdate
1138 ,P_LAST_UPDATED_BY => l_user_id
1139 ,P_LAST_UPDATE_DATE => sysdate
1140 ,P_LAST_UPDATE_LOGIN => 0
1141 ,X_ROWID => l_row_id
1142 ,X_RETURN_STATUS => l_return_status
1143 ,X_ORACLE_ERROR => l_oracle_error
1144 ,X_MSG_DATA => l_msg_data);
1145 END IF;
1146 CLOSE Cur_rowid;
1147 END LOAD_ROW;
1148
1149 /*Bug# 5237433 */
1150 PROCEDURE load_row (
1151 X_SAFETY_PHRASE_CODE IN VARCHAR2
1152 ,X_SAFETY_PHRASE_DESCRIPTION IN VARCHAR2
1153 ,X_OWNER IN VARCHAR2
1154 ) IS
1155 CURSOR Cur_rowid IS
1156 SELECT rowid
1157 FROM GR_SAFETY_PHRASES_TL
1158 WHERE (SAFETY_PHRASE_CODE = X_SAFETY_PHRASE_CODE)
1159 AND USERENV('LANG') in (LANGUAGE,SOURCE_LANG);
1160 l_user_id NUMBER DEFAULT 0;
1161 l_row_id VARCHAR2(64);
1162 l_return_status VARCHAR2(1);
1163 l_oracle_error NUMBER;
1164 l_msg_data VARCHAR2(2000);
1165 l_sysdate DATE;
1166
1167 BEGIN
1168 IF (x_owner = 'SEED') THEN
1169 l_user_id := 1;
1170 END IF;
1171 select sysdate into l_sysdate from dual;
1172
1173 OPEN Cur_rowid;
1174 FETCH Cur_rowid INTO l_row_id;
1175 IF Cur_rowid%FOUND THEN
1176 UPDATE GR_SAFETY_PHRASES_TL SET
1177 SAFETY_PHRASE_DESCRIPTION = X_SAFETY_PHRASE_DESCRIPTION,
1178 LAST_UPDATE_DATE = l_sysdate,
1179 LAST_UPDATED_BY = l_user_id,
1180 LAST_UPDATE_LOGIN = 0,
1181 SOURCE_LANG = userenv('LANG')
1182 WHERE (SAFETY_PHRASE_CODE = X_SAFETY_PHRASE_CODE)
1183 AND userenv('LANG') in (LANGUAGE,SOURCE_LANG);
1184 ELSE
1185 insert into GR_SAFETY_PHRASES_TL (
1186 SAFETY_PHRASE_CODE,
1187 SAFETY_PHRASE_DESCRIPTION,
1188 CREATED_BY,
1189 CREATION_DATE,
1190 LAST_UPDATED_BY,
1191 LAST_UPDATE_DATE,
1192 LAST_UPDATE_LOGIN,
1193 LANGUAGE,
1194 SOURCE_LANG
1195 ) select
1196 X_SAFETY_PHRASE_CODE,
1197 X_SAFETY_PHRASE_DESCRIPTION,
1198 l_user_id,
1199 l_sysdate,
1200 l_user_id,
1201 l_sysdate,
1202 0,
1203 L.LANGUAGE_CODE,
1204 userenv('LANG')
1205 from FND_LANGUAGES L
1206 where L.INSTALLED_FLAG in ('I', 'B')
1207 and not exists
1208 (select NULL
1209 from GR_SAFETY_PHRASES_TL T
1210 where T.SAFETY_PHRASE_CODE = X_SAFETY_PHRASE_CODE
1211 and T.LANGUAGE = L.LANGUAGE_CODE);
1212 END IF;
1213 CLOSE Cur_rowid;
1214 END LOAD_ROW;
1215
1216 /* 21-Jan-2002 Melanie Grosser BUG 2190024 - Added procedure NEW_LANGUAGE
1217 to be called from GRNLINS.sql. Generated
1218 from tltblgen.
1219 */
1220 procedure NEW_LANGUAGE
1221 is
1222 begin
1223 delete from GR_SAFETY_PHRASES_TL T
1224 where not exists
1225 (select NULL
1226 from GR_SAFETY_PHRASES_B B
1227 where B.SAFETY_PHRASE_CODE = T.SAFETY_PHRASE_CODE
1228 );
1229
1230 update GR_SAFETY_PHRASES_TL T set (
1231 SAFETY_PHRASE_DESCRIPTION
1232 ) = (select
1233 B.SAFETY_PHRASE_DESCRIPTION
1234 from GR_SAFETY_PHRASES_TL B
1235 where B.SAFETY_PHRASE_CODE = T.SAFETY_PHRASE_CODE
1236 and B.LANGUAGE = T.SOURCE_LANG)
1237 where (
1238 T.SAFETY_PHRASE_CODE,
1239 T.LANGUAGE
1240 ) in (select
1241 SUBT.SAFETY_PHRASE_CODE,
1242 SUBT.LANGUAGE
1243 from GR_SAFETY_PHRASES_TL SUBB, GR_SAFETY_PHRASES_TL SUBT
1244 where SUBB.SAFETY_PHRASE_CODE = SUBT.SAFETY_PHRASE_CODE
1245 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
1246 and (SUBB.SAFETY_PHRASE_DESCRIPTION <> SUBT.SAFETY_PHRASE_DESCRIPTION
1247 ));
1248
1249 insert into GR_SAFETY_PHRASES_TL (
1250 SAFETY_PHRASE_CODE,
1251 SAFETY_PHRASE_DESCRIPTION,
1252 CREATED_BY,
1253 CREATION_DATE,
1254 LAST_UPDATED_BY,
1255 LAST_UPDATE_DATE,
1256 LAST_UPDATE_LOGIN,
1257 LANGUAGE,
1258 SOURCE_LANG
1259 ) select
1260 B.SAFETY_PHRASE_CODE,
1261 B.SAFETY_PHRASE_DESCRIPTION,
1262 B.CREATED_BY,
1263 B.CREATION_DATE,
1264 B.LAST_UPDATED_BY,
1265 B.LAST_UPDATE_DATE,
1266 B.LAST_UPDATE_LOGIN,
1267 L.LANGUAGE_CODE,
1268 B.SOURCE_LANG
1269 from GR_SAFETY_PHRASES_TL B, FND_LANGUAGES L
1270 where L.INSTALLED_FLAG in ('I', 'B')
1271 and B.LANGUAGE = userenv('LANG')
1272 and not exists
1273 (select NULL
1274 from GR_SAFETY_PHRASES_TL T
1275 where T.SAFETY_PHRASE_CODE = B.SAFETY_PHRASE_CODE
1276 and T.LANGUAGE = L.LANGUAGE_CODE);
1277
1278 end NEW_LANGUAGE;
1279
1280
1281 END GR_SAFETY_PHRASES_TL_PKG;