DBA Data[Home] [Help]

PACKAGE BODY: APPS.GR_REGIONS_PKG

Source


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