DBA Data[Home] [Help]

PACKAGE BODY: APPS.GR_PROPERTIES_B_PKG

Source


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