[Home] [Help]
PACKAGE BODY: APPS.GR_EXPOSURE_TYPES_B_PKG
Source
1 PACKAGE BODY GR_EXPOSURE_TYPES_B_PKG AS
2 /*$Header: GRHIETB.pls 115.8 2002/10/29 20:46:41 mgrosser ship $*/
3 PROCEDURE Insert_Row
4 (p_commit IN VARCHAR2,
5 p_called_by_form IN VARCHAR2,
6 p_exposure_type_code IN VARCHAR2,
7 p_created_by IN NUMBER,
8 p_creation_date IN DATE,
9 p_last_updated_by IN NUMBER,
10 p_last_update_date IN DATE,
11 p_last_update_login IN NUMBER,
12 x_rowid OUT NOCOPY VARCHAR2,
13 x_return_status OUT NOCOPY VARCHAR2,
14 x_oracle_error OUT NOCOPY NUMBER,
15 x_msg_data OUT NOCOPY VARCHAR2)
16 IS
17
18 /* Alpha Variables */
19
20 L_RETURN_STATUS VARCHAR2(1) := 'S';
21 L_KEY_EXISTS VARCHAR2(1);
22 L_MSG_DATA VARCHAR2(2000);
23 L_ROWID VARCHAR2(18);
24
25 /* Number Variables */
26
27 L_ORACLE_ERROR NUMBER;
28
29 /* Exceptions */
30
31 FOREIGN_KEY_ERROR EXCEPTION;
32 ITEM_EXISTS_ERROR EXCEPTION;
33 ROW_MISSING_ERROR EXCEPTION;
34
35 /* Declare cursors */
36
37
38 BEGIN
39 /* Initialization Routine */
40
41 SAVEPOINT Insert_Row;
42 x_return_status := 'S';
43 x_oracle_error := 0;
44 x_msg_data := NULL;
45
46 /* Now call the check foreign key procedure */
47
48 Check_Foreign_Keys
49 (p_exposure_type_code,
50 l_return_status,
51 l_oracle_error,
52 l_msg_data);
53
54 IF l_return_status <> 'S' THEN
55 RAISE Foreign_Key_Error;
56 END IF;
57
58 /* Now check the primary key doesn't already exist */
59
60 Check_Primary_Key
61 (p_exposure_type_code,
62 'F',
63 l_rowid,
64 l_key_exists);
65
66 IF FND_API.To_Boolean(l_key_exists) THEN
67 RAISE Item_Exists_Error;
68 END IF;
69
70 INSERT INTO gr_exposure_types_b
71 (exposure_type_code,
72 created_by,
73 creation_date,
74 last_updated_by,
75 last_update_date,
76 last_update_login)
77 VALUES
78 (p_exposure_type_code,
79 p_created_by,
80 p_creation_date,
81 p_last_updated_by,
82 p_last_update_date,
83 p_last_update_login);
84
85 /* Now get the row id of the inserted record */
86
87 Check_Primary_Key
88 (p_exposure_type_code,
89 'F',
90 l_rowid,
91 l_key_exists);
92
93 IF FND_API.To_Boolean(l_key_exists) THEN
94 x_rowid := l_rowid;
95 ELSE
96 RAISE Row_Missing_Error;
97 END IF;
98
99 /* Check the commit flag and if set, then commit the work. */
100
101 IF FND_API.To_Boolean(p_commit) THEN
102 COMMIT WORK;
103 END IF;
104
105 EXCEPTION
106
107 WHEN Foreign_Key_Error THEN
108 ROLLBACK TO SAVEPOINT Insert_Row;
109 x_return_status := l_return_status;
110 x_oracle_error := l_oracle_error;
111 FND_MESSAGE.SET_NAME('GR',
112 'GR_FOREIGN_KEY_ERROR');
113 FND_MESSAGE.SET_TOKEN('TEXT',
114 l_msg_data,
115 FALSE);
116 IF FND_API.To_Boolean(p_called_by_form) THEN
117 APP_EXCEPTION.Raise_Exception;
118 ELSE
119 x_msg_data := FND_MESSAGE.Get;
120 END IF;
121
122 WHEN Item_Exists_Error THEN
123 ROLLBACK TO SAVEPOINT Insert_Row;
124 x_return_status := 'E';
125 x_oracle_error := APP_EXCEPTION.Get_Code;
126 FND_MESSAGE.SET_NAME('GR',
127 'GR_RECORD_EXISTS');
128 FND_MESSAGE.SET_TOKEN('CODE',
129 p_exposure_type_code,
130 FALSE);
131 IF FND_API.To_Boolean(p_called_by_form) THEN
132 APP_EXCEPTION.Raise_Exception;
133 ELSE
134 x_msg_data := FND_MESSAGE.Get;
135 END IF;
136
137 WHEN Row_Missing_Error THEN
138 ROLLBACK TO SAVEPOINT Insert_Row;
139 x_return_status := 'E';
140 x_oracle_error := APP_EXCEPTION.Get_Code;
141 FND_MESSAGE.SET_NAME('GR',
142 'GR_NO_RECORD_INSERTED');
143 FND_MESSAGE.SET_TOKEN('CODE',
144 p_exposure_type_code,
145 FALSE);
146 IF FND_API.To_Boolean(p_called_by_form) THEN
147 APP_EXCEPTION.Raise_Exception;
148 ELSE
149 x_msg_data := FND_MESSAGE.Get;
150 END IF;
151
152 WHEN OTHERS THEN
153 ROLLBACK TO SAVEPOINT Insert_Row;
154 x_return_status := 'U';
155 x_oracle_error := APP_EXCEPTION.Get_Code;
156 l_msg_data := APP_EXCEPTION.Get_Text;
157 FND_MESSAGE.SET_NAME('GR',
158 'GR_UNEXPECTED_ERROR');
159 FND_MESSAGE.SET_TOKEN('TEXT',
160 l_msg_data,
161 FALSE);
162 IF FND_API.To_Boolean(p_called_by_form) THEN
163 APP_EXCEPTION.Raise_Exception;
164 ELSE
165 x_msg_data := FND_MESSAGE.Get;
166 END IF;
167
168 END Insert_Row;
169
170 PROCEDURE Update_Row
171 (p_commit IN VARCHAR2,
172 p_called_by_form IN VARCHAR2,
173 p_rowid IN VARCHAR2,
174 p_exposure_type_code IN VARCHAR2,
175 p_created_by IN NUMBER,
176 p_creation_date IN DATE,
177 p_last_updated_by IN NUMBER,
178 p_last_update_date IN DATE,
179 p_last_update_login IN NUMBER,
180 x_return_status OUT NOCOPY VARCHAR2,
181 x_oracle_error OUT NOCOPY NUMBER,
182 x_msg_data OUT NOCOPY VARCHAR2)
183 IS
184
185 /* Alpha Variables */
186
187 L_RETURN_STATUS VARCHAR2(1) := 'S';
188 L_MSG_DATA VARCHAR2(2000);
189
190 /* Number Variables */
191
192 L_ORACLE_ERROR NUMBER;
193
194 /* Exceptions */
195
196 FOREIGN_KEY_ERROR EXCEPTION;
197 ROW_MISSING_ERROR EXCEPTION;
198 BEGIN
199
200 /* Initialization Routine */
201
202 SAVEPOINT Update_Row;
203 x_return_status := 'S';
204 x_oracle_error := 0;
205 x_msg_data := NULL;
206
207 /* Now call the check foreign key procedure */
208
209 Check_Foreign_Keys
210 (p_exposure_type_code,
211 l_return_status,
212 l_oracle_error,
213 l_msg_data);
214
215 IF l_return_status <> 'S' THEN
216 RAISE Foreign_Key_Error;
217 ELSE
218 UPDATE gr_exposure_types_b
219 SET exposure_type_code = p_exposure_type_code,
220 created_by = p_created_by,
221 creation_date = p_creation_date,
222 last_updated_by = p_last_updated_by,
223 last_update_date = p_last_update_date,
224 last_update_login = p_last_update_login
225 WHERE rowid = p_rowid;
226
227 IF SQL%NOTFOUND THEN
228 RAISE Row_Missing_Error;
229 END IF;
230 END IF;
231
232 /* Check if do the commit */
233
234 IF FND_API.To_Boolean(p_commit) THEN
235 COMMIT WORK;
236 END IF;
237
238 EXCEPTION
239
240 WHEN Foreign_Key_Error THEN
241 ROLLBACK TO SAVEPOINT Update_Row;
242 x_return_status := l_return_status;
243 x_oracle_error := l_oracle_error;
244 FND_MESSAGE.SET_NAME('GR',
245 'GR_FOREIGN_KEY_ERROR');
246 FND_MESSAGE.SET_TOKEN('TEXT',
247 l_msg_data,
248 FALSE);
249 IF FND_API.To_Boolean(p_called_by_form) THEN
250 APP_EXCEPTION.Raise_Exception;
251 ELSE
252 x_msg_data := FND_MESSAGE.Get;
253 END IF;
254
255 WHEN Row_Missing_Error THEN
256 ROLLBACK TO SAVEPOINT Update_Row;
257 x_return_status := 'E';
258 x_oracle_error := APP_EXCEPTION.Get_Code;
259 FND_MESSAGE.SET_NAME('GR',
260 'GR_NO_RECORD_INSERTED');
261 FND_MESSAGE.SET_TOKEN('CODE',
262 p_exposure_type_code,
263 FALSE);
264 IF FND_API.To_Boolean(p_called_by_form) THEN
265 APP_EXCEPTION.Raise_Exception;
266 ELSE
267 x_msg_data := FND_MESSAGE.Get;
268 END IF;
269
270 WHEN OTHERS THEN
271 ROLLBACK TO SAVEPOINT Update_Row;
272 x_return_status := 'U';
273 x_oracle_error := APP_EXCEPTION.Get_Code;
274 l_msg_data := APP_EXCEPTION.Get_Text;
275 FND_MESSAGE.SET_NAME('GR',
276 'GR_UNEXPECTED_ERROR');
277 FND_MESSAGE.SET_TOKEN('TEXT',
278 l_msg_data,
279 FALSE);
280 IF FND_API.To_Boolean(p_called_by_form) THEN
281 APP_EXCEPTION.Raise_Exception;
282 ELSE
283 x_msg_data := FND_MESSAGE.Get;
284 END IF;
285
286 END Update_Row;
287
288 PROCEDURE Lock_Row
289 (p_commit IN VARCHAR2,
290 p_called_by_form IN VARCHAR2,
291 p_rowid IN VARCHAR2,
292 p_exposure_type_code IN VARCHAR2,
293 p_created_by IN NUMBER,
294 p_creation_date IN DATE,
295 p_last_updated_by IN NUMBER,
296 p_last_update_date IN DATE,
297 p_last_update_login IN NUMBER,
298 x_return_status OUT NOCOPY VARCHAR2,
299 x_oracle_error OUT NOCOPY NUMBER,
300 x_msg_data OUT NOCOPY VARCHAR2)
301 IS
302
303 /* Alpha Variables */
304
305 L_RETURN_STATUS VARCHAR2(1) := 'S';
306 L_MSG_DATA VARCHAR2(2000);
307
308 /* Number Variables */
309
310 L_ORACLE_ERROR NUMBER;
311
312 /* Exceptions */
313
314 NO_DATA_FOUND_ERROR EXCEPTION;
315 RECORD_CHANGED_ERROR EXCEPTION;
316
317 /* Define the cursors */
318
319 CURSOR c_lock_exposure_type
320 IS
321 SELECT last_update_date
322 FROM gr_exposure_types_b
323 WHERE rowid = p_rowid
324 FOR UPDATE NOWAIT;
325 LockExposureRcd c_lock_exposure_type%ROWTYPE;
326 BEGIN
327
328 /* Initialization Routine */
329
330 SAVEPOINT Lock_Row;
331 x_return_status := 'S';
332 x_oracle_error := 0;
333 x_msg_data := NULL;
334
335 /* Now lock the record */
336
337 OPEN c_lock_exposure_type;
338 FETCH c_lock_exposure_type INTO LockExposureRcd;
339 IF c_lock_exposure_type%NOTFOUND THEN
340 CLOSE c_lock_exposure_type;
341 RAISE No_Data_Found_Error;
342 END IF;
343 CLOSE c_lock_exposure_type;
344
345 IF LockExposureRcd.last_update_date <> p_last_update_date THEN
346 RAISE RECORD_CHANGED_ERROR;
347 END IF;
348
349 IF FND_API.To_Boolean(p_commit) THEN
350 COMMIT WORK;
351 END IF;
352
353 EXCEPTION
354
355 WHEN No_Data_Found_Error THEN
356 ROLLBACK TO SAVEPOINT Lock_Row;
357 x_return_status := 'E';
358 FND_MESSAGE.SET_NAME('GR',
359 'GR_RECORD_NOT_FOUND');
360 FND_MESSAGE.SET_TOKEN('CODE',
361 p_exposure_type_code,
362 FALSE);
363 IF FND_API.To_Boolean(p_called_by_form) THEN
364 APP_EXCEPTION.Raise_Exception;
365 ELSE
366 x_msg_data := FND_MESSAGE.Get;
367 END IF;
368
369 WHEN RECORD_CHANGED_ERROR THEN
370 ROLLBACK TO SAVEPOINT Lock_Row;
371 X_return_status := 'E';
372 FND_MESSAGE.SET_NAME('FND',
373 'FORM_RECORD_CHANGED');
374 IF FND_API.To_Boolean(p_called_by_form) THEN
375 APP_EXCEPTION.Raise_Exception;
376 ELSE
377 x_msg_data := FND_MESSAGE.Get;
378 END IF;
379 WHEN APP_EXCEPTION.RECORD_LOCK_EXCEPTION THEN
380 ROLLBACK TO SAVEPOINT Lock_Row;
381 x_return_status := 'L';
382 x_oracle_error := APP_EXCEPTION.Get_Code;
383 IF NOT (FND_API.To_Boolean(p_called_by_form)) THEN
384 FND_MESSAGE.SET_NAME('GR',
385 'GR_ROW_IS_LOCKED');
386 x_msg_data := FND_MESSAGE.Get;
387 END IF;
388
389 WHEN OTHERS THEN
390 ROLLBACK TO SAVEPOINT Lock_Row;
391 x_return_status := 'U';
392 x_oracle_error := APP_EXCEPTION.Get_Code;
393 l_msg_data := APP_EXCEPTION.Get_Text;
394 FND_MESSAGE.SET_NAME('GR',
395 'GR_UNEXPECTED_ERROR');
396 FND_MESSAGE.SET_TOKEN('TEXT',
397 l_msg_data,
398 FALSE);
399 IF FND_API.To_Boolean(p_called_by_form) THEN
400 APP_EXCEPTION.Raise_Exception;
401 ELSE
402 x_msg_data := FND_MESSAGE.Get;
403 END IF;
404
405 END Lock_Row;
406
407 PROCEDURE Delete_Row
408 (p_commit IN VARCHAR2,
409 p_called_by_form IN VARCHAR2,
410 p_rowid IN VARCHAR2,
411 p_exposure_type_code IN VARCHAR2,
412 p_created_by IN NUMBER,
413 p_creation_date IN DATE,
414 p_last_updated_by IN NUMBER,
415 p_last_update_date IN DATE,
416 p_last_update_login IN NUMBER,
417 x_return_status OUT NOCOPY VARCHAR2,
418 x_oracle_error OUT NOCOPY NUMBER,
419 x_msg_data OUT NOCOPY VARCHAR2)
420 IS
421 /* Alpha Variables */
422
423 L_RETURN_STATUS VARCHAR2(1) := 'S';
424 L_MSG_DATA VARCHAR2(2000);
425
426 /* Number Variables */
427
428 L_ORACLE_ERROR NUMBER;
429
430 /* Exceptions */
431
432 CHECK_INTEGRITY_ERROR EXCEPTION;
433 ROW_MISSING_ERROR EXCEPTION;
434 PRAGMA EXCEPTION_INIT(Row_Missing_Error,100);
435
436 BEGIN
437
438 /* Initialization Routine */
439
440 SAVEPOINT Delete_Row;
441 x_return_status := 'S';
442 x_oracle_error := 0;
443 x_msg_data := NULL;
444
445 /* Now call the check integrity procedure */
446
447 Check_Integrity
448 (p_called_by_form,
449 p_exposure_type_code,
450 l_return_status,
451 l_oracle_error,
452 l_msg_data);
453
454 IF l_return_status <> 'S' THEN
455 RAISE Check_Integrity_Error;
456 END IF;
457
458 DELETE FROM gr_exposure_types_b
459 WHERE rowid = p_rowid;
460
461 /* Check the commit flag and if set, then commit the work. */
462
463 IF FND_API.TO_Boolean(p_commit) THEN
464 COMMIT WORK;
465 END IF;
466
467 EXCEPTION
468
469 WHEN Check_Integrity_Error THEN
470 ROLLBACK TO SAVEPOINT Delete_Row;
471 x_return_status := l_return_status;
472 x_oracle_error := l_oracle_error;
473 IF FND_API.To_Boolean(p_called_by_form) THEN
474 APP_EXCEPTION.Raise_Exception;
475 ELSE
476 x_msg_data := FND_MESSAGE.Get;
477 END IF;
478
479 WHEN Row_Missing_Error THEN
480 ROLLBACK TO SAVEPOINT Delete_Row;
481 x_return_status := 'E';
482 x_oracle_error := APP_EXCEPTION.Get_Code;
483 FND_MESSAGE.SET_NAME('GR',
484 'GR_RECORD_NOT_FOUND');
485 FND_MESSAGE.SET_TOKEN('CODE',
486 p_exposure_type_code,
487 FALSE);
488 IF FND_API.To_Boolean(p_called_by_form) THEN
489 APP_EXCEPTION.Raise_Exception;
490 ELSE
491 x_msg_data := FND_MESSAGE.Get;
492 END IF;
493
494 WHEN OTHERS THEN
495 ROLLBACK TO SAVEPOINT Delete_Row;
496 x_return_status := 'U';
497 x_oracle_error := APP_EXCEPTION.Get_Code;
501 'GR_UNEXPECTED_ERROR');
498 l_msg_data := APP_EXCEPTION.Get_Text;
499 l_msg_data := APP_EXCEPTION.Get_Text;
500 FND_MESSAGE.SET_NAME('GR',
502 FND_MESSAGE.SET_TOKEN('TEXT',
503 l_msg_data,
504 FALSE);
505 IF FND_API.To_Boolean(p_called_by_form) THEN
506 APP_EXCEPTION.Raise_Exception;
507 ELSE
508 x_msg_data := FND_MESSAGE.Get;
509 END IF;
510
511 END Delete_Row;
512
513 PROCEDURE Check_Foreign_Keys
514 (p_exposure_type_code IN VARCHAR2,
515 x_return_status OUT NOCOPY VARCHAR2,
516 x_oracle_error OUT NOCOPY NUMBER,
517 x_msg_data OUT NOCOPY VARCHAR2)
518 IS
519
520 /* Alpha Variables */
521
522 L_RETURN_STATUS VARCHAR2(1) := 'S';
523 L_MSG_DATA VARCHAR2(2000);
524 L_ROWID VARCHAR2(18);
525 L_KEY_EXISTS VARCHAR2(1);
526
527 /* Number Variables */
528
529 L_ORACLE_ERROR NUMBER;
530
531
532 BEGIN
533
534 /* Initialization Routine */
535
536 SAVEPOINT Check_Foreign_Keys;
537 x_return_status := 'S';
538 x_oracle_error := 0;
539 x_msg_data := NULL;
540
541 /* No foreign keys need to be checked */
542
543 EXCEPTION
544
545 WHEN OTHERS THEN
546 ROLLBACK TO SAVEPOINT Check_Foreign_Keys;
547 x_return_status := 'U';
548 x_oracle_error := APP_EXCEPTION.Get_Code;
549 l_msg_data := APP_EXCEPTION.Get_Text;
550 FND_MESSAGE.SET_NAME('GR',
551 'GR_UNEXPECTED_ERROR');
552 FND_MESSAGE.SET_TOKEN('TEXT',
553 l_msg_data,
554 FALSE);
555 x_msg_data := FND_MESSAGE.Get;
556
557 END Check_Foreign_Keys;
558
559 PROCEDURE Check_Integrity
560 (p_called_by_form IN VARCHAR2,
561 p_exposure_type_code IN VARCHAR2,
562 x_return_status OUT NOCOPY VARCHAR2,
563 x_oracle_error OUT NOCOPY NUMBER,
564 x_msg_data OUT NOCOPY VARCHAR2)
565 IS
566
567 /* Alpha Variables */
568
569 L_RETURN_STATUS VARCHAR2(1) := 'S';
570 L_MSG_DATA VARCHAR2(2000);
571
572 /* Number Variables */
573
574 L_ORACLE_ERROR NUMBER;
575 L_RECORD_COUNT NUMBER;
576
577 /* Exceptions */
578 INTEGRITY_ERROR EXCEPTION;
579 /* Define Cursors */
580
581 CURSOR c_get_item_exposure
582 IS
583 SELECT COUNT(*)
584 FROM gr_item_exposure
585 WHERE exposure_type_code = p_exposure_type_code;
586 ExposureRecord c_get_item_exposure%ROWTYPE;
587
588 BEGIN
589
590 /* Initialization Routine */
591
592 SAVEPOINT Check_Integrity;
593 x_return_status := 'S';
594 x_oracle_error := 0;
595 x_msg_data := NULL;
596 l_record_count := 0;
597
598 OPEN c_get_item_exposure;
599 FETCH c_get_item_exposure INTO l_record_count;
600 CLOSE c_get_item_exposure;
601
602 IF l_record_count <> 0 THEN
603 l_return_status := 'E';
604 l_msg_data := l_msg_data || ' gr_item_exposure';
605 END IF;
606 /*
607 ** Now sort out the error messaging
608 */
609 IF l_return_status <> 'S' THEN
610 RAISE INTEGRITY_ERROR;
611 END IF;
612
613
614 EXCEPTION
615
616 WHEN INTEGRITY_ERROR THEN
617 x_return_status := 'E';
618 FND_MESSAGE.SET_NAME('GR',
619 'GR_INTEGRITY_HEADER');
620 FND_MESSAGE.SET_TOKEN('CODE',
621 p_exposure_type_code,
622 FALSE);
623 FND_MESSAGE.SET_TOKEN('TABLES',
624 l_msg_data,
625 FALSE);
626 IF FND_API.To_Boolean(p_called_by_form) THEN
627 APP_EXCEPTION.Raise_Exception;
628 ELSE
629 x_msg_data := FND_MESSAGE.Get;
630 END IF;
631 WHEN OTHERS THEN
632 ROLLBACK TO SAVEPOINT Check_Integrity;
633 x_return_status := 'U';
634 x_oracle_error := APP_EXCEPTION.Get_Code;
635 l_msg_data := APP_EXCEPTION.Get_Text;
636 FND_MESSAGE.SET_NAME('GR',
637 'GR_UNEXPECTED_ERROR');
638 FND_MESSAGE.SET_TOKEN('TEXT',
639 l_msg_data,
640 FALSE);
641 IF FND_API.To_Boolean(p_called_by_form) THEN
642 APP_EXCEPTION.Raise_Exception;
643 ELSE
644 x_msg_data := FND_MESSAGE.Get;
645 END IF;
646
647 END Check_Integrity;
648
649 PROCEDURE Check_Primary_Key
650 (p_exposure_type_code IN VARCHAR2,
651 p_called_by_form IN VARCHAR2,
652 x_rowid OUT NOCOPY VARCHAR2,
653 x_key_exists OUT NOCOPY VARCHAR2)
654 IS
655 /* Declare any variables and the cursor */
656
657 L_MSG_DATA VARCHAR2(2000);
658
659 CURSOR c_get_expo_type_rowid
660 IS
661 SELECT et.rowid
662 FROM gr_exposure_types_b et
663 WHERE et.exposure_type_code = p_exposure_type_code;
664 ExposureTypeRecord c_get_expo_type_rowid%ROWTYPE;
665
666 BEGIN
667
668 x_key_exists := 'F';
669 OPEN c_get_expo_type_rowid;
670 FETCH c_get_expo_type_rowid INTO ExposureTypeRecord;
671 IF c_get_expo_type_rowid%FOUND THEN
672 x_key_exists := 'T';
673 x_rowid := ExposureTypeRecord.rowid;
674 ELSE
675 x_key_exists := 'F';
676 END IF;
677 CLOSE c_get_expo_type_rowid;
678
679 EXCEPTION
680
681 WHEN Others THEN
682 l_msg_data := APP_EXCEPTION.Get_Text;
683 FND_MESSAGE.SET_NAME('GR',
684 'GR_UNEXPECTED_ERROR');
685 FND_MESSAGE.SET_TOKEN('TEXT',
686 l_msg_data,
687 FALSE);
688 IF FND_API.To_Boolean(p_called_by_form) THEN
689 APP_EXCEPTION.Raise_Exception;
690 END IF;
691
692 END Check_Primary_Key;
693
694 END GR_EXPOSURE_TYPES_B_PKG;