DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_SS_TST_RSLT_DTLS_PKG

Source


1 PACKAGE BODY IGS_SS_TST_RSLT_DTLS_PKG AS
2 /* $Header: IGSSS07B.pls 115.6 2003/10/30 13:32:33 rghosh noship $ */
3   l_rowid VARCHAR2(25);
4   old_references igs_ss_tst_rslt_dtls%RowType;
5   new_references igs_ss_tst_rslt_dtls%RowType;
6 
7   PROCEDURE Set_Column_Values (
8     p_action IN VARCHAR2,
9     x_rowid IN VARCHAR2 DEFAULT NULL,
10     x_tst_rslt_dtls_id IN NUMBER DEFAULT NULL,
11     x_test_results_id IN NUMBER DEFAULT NULL,
12     x_test_segment_id IN NUMBER DEFAULT NULL,
13     x_test_score IN NUMBER DEFAULT NULL,
14     x_creation_date IN DATE DEFAULT NULL,
15     x_created_by IN NUMBER DEFAULT NULL,
16     x_last_update_date IN DATE DEFAULT NULL,
17     x_last_updated_by IN NUMBER DEFAULT NULL,
18     x_last_update_login IN NUMBER DEFAULT NULL
19   ) AS
20 
21   /*************************************************************
22   Created By :
23   Date Created By :
24   Purpose :
25   Know limitations, enhancements or remarks
26   Change History
27   Who             When            What
28   Nishikant       13jun2002       the message IGS_AD_SCORE_NOT_LT_ZERO was being
29                                   set with FND application, which got modified to IGS.
30                                   as per bug#2413811.
31   (reverse chronological order - newest change first)
32   ***************************************************************/
33 
34     CURSOR cur_old_ref_values IS
35       SELECT   *
36       FROM     IGS_SS_TST_RSLT_DTLS
37       WHERE    rowid = x_rowid;
38 
39   BEGIN
40 
41     l_rowid := x_rowid;
42 
43     -- Code for setting the Old and New Reference Values.
44     -- Populate Old Values.
45     Open cur_old_ref_values;
46     Fetch cur_old_ref_values INTO old_references;
47     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
48       Close cur_old_ref_values;
49       --Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
50 -- bug#2413811 - Nishikant - 13jun2002
51 -- The below message was being set with FND application, which got modified to IGS.
52       Fnd_Message.Set_Name ('IGS', 'IGS_AD_SCORE_NOT_LT_ZERO');
53       FND_MSG_PUB.ADD;
54       RAISE FND_API.G_EXC_ERROR;
55       Return;
56     END IF;
57     Close cur_old_ref_values;
58 
59     -- Populate New Values.
60     new_references.ss_tst_rslt_dtls_id := x_tst_rslt_dtls_id;
61     new_references.ss_test_results_id := x_test_results_id;
62     new_references.test_segment_id := x_test_segment_id;
63     new_references.test_score := x_test_score;
64     IF (p_action = 'UPDATE') THEN
65       new_references.creation_date := old_references.creation_date;
66       new_references.created_by := old_references.created_by;
67     ELSE
68       new_references.creation_date := x_creation_date;
69       new_references.created_by := x_created_by;
70     END IF;
71     new_references.last_update_date := x_last_update_date;
72     new_references.last_updated_by := x_last_updated_by;
73     new_references.last_update_login := x_last_update_login;
74 
75   END Set_Column_Values;
76 
77   PROCEDURE Check_Constraints (
78 		 Column_Name IN VARCHAR2  DEFAULT NULL,
79 		 Column_Value IN VARCHAR2  DEFAULT NULL ) AS
80   /*************************************************************
81   Created By :
82   Date Created By :
83   Purpose :
84   Know limitations, enhancements or remarks
85   Change History
86   Who             When            What
87 
88   (reverse chronological order - newest change first)
89   ***************************************************************/
90 
91   BEGIN
92 
93       IF column_name IS NULL THEN
94         NULL;
95       ELSIF  UPPER(column_name) = 'TEST_SCORE'  THEN
96         new_references.test_score := IGS_GE_NUMBER.TO_NUM(column_value);
97         NULL;
98       END IF;
99 
100     -- The following code checks for check constraints on the Columns.
101       IF Upper(Column_Name) = 'TEST_SCORE' OR
102       	Column_Name IS NULL THEN
103         IF NOT (new_references.test_score>=0)  THEN
104            Fnd_Message.Set_Name('IGS','IGS_AD_SCORE_NOT_LT_ZERO');
105             FND_MSG_PUB.ADD;
106             RAISE FND_API.G_EXC_ERROR;
107         END IF;
108       END IF;
109 
110 
111   END Check_Constraints;
112 
113  PROCEDURE Check_Uniqueness AS
114   /*************************************************************
115   Created By :
116   Date Created By :
117   Purpose :
118   Know limitations, enhancements or remarks
119   Change History
120   Who             When            What
121 
122   (reverse chronological order - newest change first)
123   ***************************************************************/
124 
125    begin
126      		IF Get_Uk_For_Validation (
127     		new_references.ss_test_results_id
128     		,new_references.test_segment_id
129     		) THEN
130  		         Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
131                  FND_MSG_PUB.ADD;
132                 RAISE FND_API.G_EXC_ERROR;
133     		END IF;
134  END Check_Uniqueness ;
135   PROCEDURE Check_Parent_Existance AS
136   /*************************************************************
137   Created By :
138   Date Created By :
139   Purpose :
140   Know limitations, enhancements or remarks
141   Change History
142   Who             When            What
143 
144   (reverse chronological order - newest change first)
145   ***************************************************************/
146 
147   BEGIN
148 
149     IF (((old_references.ss_test_results_id = new_references.SS_test_results_id)) OR
150         ((new_references.SS_test_results_id IS NULL))) THEN
151       NULL;
152     ELSIF NOT Igs_Ad_Test_Results_Pkg.Get_PK_For_Validation (
153         		new_references.SS_test_results_id
154         )  THEN
155 	       Fnd_Message.Set_Name ('FND','FORM_RECORD_DELETED');
156            FND_MSG_PUB.ADD;
157            RAISE FND_API.G_EXC_ERROR;
158     END IF;
159 
160     IF (((old_references.test_segment_id = new_references.test_segment_id)) OR
161         ((new_references.test_segment_id IS NULL))) THEN
162       NULL;
163     ELSIF NOT Igs_Ad_Test_Segments_Pkg.Get_PK_For_Validation (
164         		new_references.test_segment_id,
165             'N'
166         )  THEN
167 	 Fnd_Message.Set_Name ('FND','FORM_RECORD_DELETED');
168       FND_MSG_PUB.ADD;
169       RAISE FND_API.G_EXC_ERROR;
170     END IF;
171 
172   END Check_Parent_Existance;
173 
174   FUNCTION Get_PK_For_Validation (
175     x_tst_rslt_dtls_id IN NUMBER
176     ) RETURN BOOLEAN AS
177 
178   /*************************************************************
179   Created By :
180   Date Created By :
181   Purpose :
182   Know limitations, enhancements or remarks
183   Change History
184   Who             When            What
185 
186   (reverse chronological order - newest change first)
187   ***************************************************************/
188 
189     CURSOR cur_rowid IS
190       SELECT   rowid
191       FROM     igs_ss_tst_rslt_dtls
192       WHERE    ss_tst_rslt_dtls_id = x_tst_rslt_dtls_id
193       FOR UPDATE NOWAIT;
194 
195     lv_rowid cur_rowid%RowType;
196 
197   BEGIN
198 
199     Open cur_rowid;
200     Fetch cur_rowid INTO lv_rowid;
201     IF (cur_rowid%FOUND) THEN
202       Close cur_rowid;
203       Return(TRUE);
204     ELSE
205       Close cur_rowid;
206       Return(FALSE);
207     END IF;
208   END Get_PK_For_Validation;
209 
210   FUNCTION Get_UK_For_Validation (
211     x_test_results_id IN NUMBER,
212     x_test_segment_id IN NUMBER
213     ) RETURN BOOLEAN AS
214 
215   /*************************************************************
216   Created By :
217   Date Created By :
218   Purpose :
219   Know limitations, enhancements or remarks
220   Change History
221   Who             When            What
222 
223   (reverse chronological order - newest change first)
224   ***************************************************************/
225 
226     CURSOR cur_rowid IS
227       SELECT   rowid
228       FROM     igs_ss_tst_rslt_dtls
229       WHERE    ss_test_results_id = x_test_results_id
230       AND      test_segment_id = x_test_segment_id 	and      ((l_rowid is null) or (rowid <> l_rowid))
231 
232       ;
233     lv_rowid cur_rowid%RowType;
234 
235   BEGIN
236 
237     Open cur_rowid;
238     Fetch cur_rowid INTO lv_rowid;
239     IF (cur_rowid%FOUND) THEN
240       Close cur_rowid;
241         return (true);
242         ELSE
243        close cur_rowid;
244       return(false);
245     END IF;
246   END Get_UK_For_Validation ;
247 
248   PROCEDURE Get_FK_Igs_Ad_Test_Results (
249     x_test_results_id IN NUMBER
250     ) AS
251 
252   /*************************************************************
253   Created By :
254   Date Created By :
255   Purpose :
256   Know limitations, enhancements or remarks
257   Change History
258   Who             When            What
259 
260   (reverse chronological order - newest change first)
261   ***************************************************************/
262 
263     CURSOR cur_rowid IS
264       SELECT   rowid
265       FROM     igs_ss_tst_rslt_dtls
266       WHERE    ss_test_results_id = x_test_results_id ;
267 
268     lv_rowid cur_rowid%RowType;
269 
270   BEGIN
271 
272     Open cur_rowid;
273     Fetch cur_rowid INTO lv_rowid;
274     IF (cur_rowid%FOUND) THEN
275       Close cur_rowid;
276       Fnd_Message.Set_Name ('IGS', 'IGS_AD_ATRD_ATR_FK');
277       FND_MSG_PUB.ADD;
278       RAISE FND_API.G_EXC_ERROR;
279       Return;
280     END IF;
281     Close cur_rowid;
282 
283   END Get_FK_Igs_Ad_Test_Results;
284 
285   PROCEDURE Get_FK_Igs_Ad_Test_Segments (
286     x_test_segment_id IN NUMBER
287     ) AS
288 
289   /*************************************************************
290   Created By :
291   Date Created By :
292   Purpose :
293   Know limitations, enhancements or remarks
294   Change History
295   Who             When            What
296 
297   (reverse chronological order - newest change first)
298   ***************************************************************/
299 
300     CURSOR cur_rowid IS
301       SELECT   rowid
302       FROM     igs_ss_tst_rslt_dtls
303       WHERE    test_segment_id = x_test_segment_id ;
304 
305     lv_rowid cur_rowid%RowType;
306 
307   BEGIN
308 
309     Open cur_rowid;
310     Fetch cur_rowid INTO lv_rowid;
311     IF (cur_rowid%FOUND) THEN
312       Close cur_rowid;
313       Fnd_Message.Set_Name ('IGS', 'IGS_AD_ATRD_ATS_FK');
314       FND_MSG_PUB.ADD;
315       RAISE FND_API.G_EXC_ERROR;
316       Return;
317     END IF;
318     Close cur_rowid;
319 
320   END Get_FK_Igs_Ad_Test_Segments;
321 
322   PROCEDURE Before_DML (
323     p_action IN VARCHAR2,
324     x_rowid IN VARCHAR2 DEFAULT NULL,
325     x_tst_rslt_dtls_id IN NUMBER DEFAULT NULL,
326     x_test_results_id IN NUMBER DEFAULT NULL,
327     x_test_segment_id IN NUMBER DEFAULT NULL,
328     x_test_score IN NUMBER DEFAULT NULL,
329     x_creation_date IN DATE DEFAULT NULL,
330     x_created_by IN NUMBER DEFAULT NULL,
331     x_last_update_date IN DATE DEFAULT NULL,
332     x_last_updated_by IN NUMBER DEFAULT NULL,
333     x_last_update_login IN NUMBER DEFAULT NULL
334   ) AS
335   /*************************************************************
336   Created By :
337   Date Created By :
338   Purpose :
339   Know limitations, enhancements or remarks
340   Change History
341   Who             When            What
342 
343   (reverse chronological order - newest change first)
344   ***************************************************************/
345 
346   BEGIN
347 
348     Set_Column_Values (
349       p_action,
350       x_rowid,
351       x_tst_rslt_dtls_id,
352       x_test_results_id,
353       x_test_segment_id,
354       x_test_score,
355       x_creation_date,
356       x_created_by,
357       x_last_update_date,
358       x_last_updated_by,
359       x_last_update_login
360     );
361 
362     IF (p_action = 'INSERT') THEN
363       -- Call all the procedures related to Before Insert.
364       Null;
365 	     IF Get_Pk_For_Validation(
366     		new_references.ss_tst_rslt_dtls_id)  THEN
367 	       Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
368      FND_MSG_PUB.ADD;
369       RAISE FND_API.G_EXC_ERROR;
370 	     END IF;
371       Check_Uniqueness;
372       Check_Constraints;
373       --Check_Parent_Existance;
374     ELSIF (p_action = 'UPDATE') THEN
375       -- Call all the procedures related to Before Update.
376       Null;
377       Check_Uniqueness;
378       Check_Constraints;
379       --Check_Parent_Existance;
380     ELSIF (p_action = 'DELETE') THEN
381       -- Call all the procedures related to Before Delete.
382       Null;
383     ELSIF (p_action = 'VALIDATE_INSERT') THEN
384 	 -- Call all the procedures related to Before Insert.
385       IF Get_PK_For_Validation (
386     		new_references.ss_tst_rslt_dtls_id)  THEN
387 	       Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
388       FND_MSG_PUB.ADD;
389       RAISE FND_API.G_EXC_ERROR;
390 	     END IF;
391       Check_Uniqueness;
392       Check_Constraints;
393     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
394       Check_Uniqueness;
395       Check_Constraints;
396     ELSIF (p_action = 'VALIDATE_DELETE') THEN
397       Null;
398     END IF;
399 
400   END Before_DML;
401 
402   PROCEDURE After_DML (
403     p_action IN VARCHAR2,
404     x_rowid IN VARCHAR2
405   ) IS
406   /*************************************************************
407   Created By :
408   Date Created By :
409   Purpose :
410   Know limitations, enhancements or remarks
411   Change History
412   Who             When            What
413 
414   (reverse chronological order - newest change first)
415   ***************************************************************/
416 
417   BEGIN
418 
419     l_rowid := x_rowid;
420 
421     IF (p_action = 'INSERT') THEN
422       -- Call all the procedures related to After Insert.
423       Null;
424     ELSIF (p_action = 'UPDATE') THEN
425       -- Call all the procedures related to After Update.
426       Null;
427     ELSIF (p_action = 'DELETE') THEN
428       -- Call all the procedures related to After Delete.
429       Null;
430     END IF;
431 
432   END After_DML;
433 
434  procedure INSERT_ROW (
435       X_ROWID in out NOCOPY VARCHAR2,
436        x_TST_RSLT_DTLS_ID IN OUT NOCOPY NUMBER,
437        x_TEST_RESULTS_ID IN NUMBER,
438        x_TEST_SEGMENT_ID IN NUMBER,
439        x_TEST_SCORE IN NUMBER,
440       X_MODE in VARCHAR2 default 'I'
441   ) AS
442   /*************************************************************
443   Created By :
444   Date Created By :
445   Purpose :
446   Know limitations, enhancements or remarks
447   Change History
448   Who             When            What
449 
450   (reverse chronological order - newest change first)
451   ***************************************************************/
452 
453     cursor C is select ROWID from IGS_SS_TST_RSLT_DTLS
454              where                 SS_TST_RSLT_DTLS_ID= X_TST_RSLT_DTLS_ID
455 ;
456      X_LAST_UPDATE_DATE DATE ;
457      X_LAST_UPDATED_BY NUMBER ;
458      X_LAST_UPDATE_LOGIN NUMBER ;
459  begin
460     X_LAST_UPDATE_DATE := SYSDATE;
461     if(X_MODE = 'I') then
462       X_LAST_UPDATED_BY := 1;
463       X_LAST_UPDATE_LOGIN := 0;
464     else
465       FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
466       FND_MSG_PUB.ADD;
467       RAISE FND_API.G_EXC_ERROR;
468     end if;
469       SELECT IGS_SS_TST_RSLT_DTLS_S.NEXTVAL  INTO X_TST_RSLT_DTLS_ID  FROM DUAL;
470    Before_DML(
471  		p_action=>'INSERT',
472  		x_rowid=>X_ROWID,
473  	       x_tst_rslt_dtls_id=>X_TST_RSLT_DTLS_ID,
474  	       x_test_results_id=>X_TEST_RESULTS_ID,
475  	       x_test_segment_id=>X_TEST_SEGMENT_ID,
476  	       x_test_score=>X_TEST_SCORE,
477 	       x_creation_date=>X_LAST_UPDATE_DATE,
478 	       x_created_by=>X_LAST_UPDATED_BY,
479 	       x_last_update_date=>X_LAST_UPDATE_DATE,
480 	       x_last_updated_by=>X_LAST_UPDATED_BY,
481 	       x_last_update_login=>X_LAST_UPDATE_LOGIN);
482      insert into IGS_SS_TST_RSLT_DTLS (
483 		SS_TST_RSLT_DTLS_ID
484 		,SS_TEST_RESULTS_ID
485 		,TEST_SEGMENT_ID
486 		,TEST_SCORE
487         ,CREATION_DATE
488 		,CREATED_BY
489 		,LAST_UPDATE_DATE
490 		,LAST_UPDATED_BY
491 		,LAST_UPDATE_LOGIN
492         ) values  (
493 	        NEW_REFERENCES.SS_TST_RSLT_DTLS_ID
494 	        ,NEW_REFERENCES.SS_TEST_RESULTS_ID
495 	        ,NEW_REFERENCES.TEST_SEGMENT_ID
496 	        ,NEW_REFERENCES.TEST_SCORE
497 	        ,X_LAST_UPDATE_DATE
498 		,X_LAST_UPDATED_BY
499 		,X_LAST_UPDATE_DATE
500 		,X_LAST_UPDATED_BY
501 		,X_LAST_UPDATE_LOGIN
502 );
503 		open c;
504 		 fetch c into X_ROWID;
505  		if (c%notfound) then
506 		close c;
507  	     raise no_data_found;
508 		end if;
509  		close c;
510     After_DML (
511 		p_action => 'INSERT' ,
512 		x_rowid => X_ROWID );
513 end INSERT_ROW;
514  procedure LOCK_ROW (
515       X_ROWID in  VARCHAR2,
516        x_TST_RSLT_DTLS_ID IN NUMBER,
517        x_TEST_RESULTS_ID IN NUMBER,
518        x_TEST_SEGMENT_ID IN NUMBER,
519        x_TEST_SCORE IN NUMBER
520   ) AS
521   /*************************************************************
522   Created By :
523   Date Created By :
524   Purpose :
525   Know limitations, enhancements or remarks
526   Change History
527   Who             When            What
528 
529   (reverse chronological order - newest change first)
530   ***************************************************************/
531 
532    cursor c1 is select
533       SS_TEST_RESULTS_ID
534 ,      TEST_SEGMENT_ID
535 ,      TEST_SCORE
536     from IGS_SS_TST_RSLT_DTLS
537     where ROWID = X_ROWID
538     for update nowait;
539      tlinfo c1%rowtype;
540 begin
541   open c1;
542   fetch c1 into tlinfo;
543   if (c1%notfound) then
544     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
545       FND_MSG_PUB.ADD;
546 
547     close c1;
548      RAISE FND_API.G_EXC_ERROR;
549     return;
550   end if;
551   close c1;
552 if ( (  tlinfo.SS_TEST_RESULTS_ID = X_TEST_RESULTS_ID)
553   AND (tlinfo.TEST_SEGMENT_ID = X_TEST_SEGMENT_ID)
554   AND ((tlinfo.TEST_SCORE = X_TEST_SCORE)
555  	    OR ((tlinfo.TEST_SCORE is null)
556 		AND (X_TEST_SCORE is null)))
557   ) then
558     null;
559   else
560       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
561       FND_MSG_PUB.ADD;
562       RAISE FND_API.G_EXC_ERROR;
563   end if;
564   return;
565 end LOCK_ROW;
566  Procedure UPDATE_ROW (
567       X_ROWID in  VARCHAR2,
568        x_TST_RSLT_DTLS_ID IN NUMBER,
569        x_TEST_RESULTS_ID IN NUMBER,
570        x_TEST_SEGMENT_ID IN NUMBER,
571        x_TEST_SCORE IN NUMBER,
572       X_MODE in VARCHAR2 default 'I'
573   ) AS
574   /*************************************************************
575   Created By :
576   Date Created By :
577   Purpose :
578   Know limitations, enhancements or remarks
579   Change History
580   Who             When            What
581 
582   (reverse chronological order - newest change first)
583   ***************************************************************/
584 
585      X_LAST_UPDATE_DATE DATE ;
586      X_LAST_UPDATED_BY NUMBER ;
587      X_LAST_UPDATE_LOGIN NUMBER ;
588  begin
589     X_LAST_UPDATE_DATE := SYSDATE;
590     if(X_MODE = 'I') then
591       X_LAST_UPDATED_BY := 1;
592       X_LAST_UPDATE_LOGIN := 0;
593     else
594       FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
595       FND_MSG_PUB.ADD;
596       RAISE FND_API.G_EXC_ERROR;
597     end if;
598    Before_DML(
599  		p_action=>'UPDATE',
600  		x_rowid=>X_ROWID,
601  	       x_tst_rslt_dtls_id=>X_TST_RSLT_DTLS_ID,
602  	       x_test_results_id=>X_TEST_RESULTS_ID,
603  	       x_test_segment_id=>X_TEST_SEGMENT_ID,
604  	       x_test_score=>X_TEST_SCORE,
605 	       x_creation_date=>X_LAST_UPDATE_DATE,
606 	       x_created_by=>X_LAST_UPDATED_BY,
607 	       x_last_update_date=>X_LAST_UPDATE_DATE,
608 	       x_last_updated_by=>X_LAST_UPDATED_BY,
609 	       x_last_update_login=>X_LAST_UPDATE_LOGIN);
610 
611 
612    update IGS_SS_TST_RSLT_DTLS set
613       SS_TEST_RESULTS_ID =  NEW_REFERENCES.SS_TEST_RESULTS_ID,
614       TEST_SEGMENT_ID =  NEW_REFERENCES.TEST_SEGMENT_ID,
615       TEST_SCORE =  NEW_REFERENCES.TEST_SCORE,
616 	LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
617 	LAST_UPDATED_BY = X_LAST_UPDATED_BY,
618 	LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
619   where ROWID = X_ROWID;
620 	if (sql%notfound) then
621 		raise no_data_found;
622 	end if;
623 
624  After_DML (
625 	p_action => 'UPDATE' ,
626 	x_rowid => X_ROWID
627 	);
628 end UPDATE_ROW;
629 
630 procedure ADD_ROW (
631         X_ROWID             IN OUT NOCOPY VARCHAR2,
632         x_TST_RSLT_DTLS_ID  IN OUT NOCOPY NUMBER,
633         x_TEST_RESULTS_ID   IN NUMBER,
634         x_TEST_SEGMENT_ID   IN NUMBER,
635         x_TEST_SCORE        IN NUMBER,
636         X_MODE              in VARCHAR2 default 'I',
637         x_return_status		OUT NOCOPY     VARCHAR2,
638         x_msg_count			OUT NOCOPY     NUMBER,
639         x_msg_data			OUT NOCOPY     VARCHAR2
640   ) AS
641   /*************************************************************
642   Created By :
643   Date Created By :
644   Purpose :
645   Know limitations, enhancements or remarks
646   Change History
647   Who             When            What
648 
649   (reverse chronological order - newest change first)
650   ***************************************************************/
651     l_api_name      	        CONSTANT VARCHAR2(30) := 'update_test_result_details';
652     l_api_version           	CONSTANT  NUMBER       := 1.0;
653 	l_count				        NUMBER;
654 
655     cursor c1 is select ROWID
656                     from IGS_SS_TST_RSLT_DTLS
657                     where     SS_TST_RSLT_DTLS_ID= X_TST_RSLT_DTLS_ID;
658 begin
659 
660     --Standard start of API savepoint
661         SAVEPOINT update_test_result_details;
662 
663     --Initialize message list if p_init_msg_list is set to TRUE.
664        -- IF FND_API.to_Boolean(p_init_msg_list) THEN
665        --         FND_MSG_PUB.initialize;
666        -- END IF;
667 
668     --Initialize API return status to success.
669         x_return_status := FND_API.G_RET_STS_SUCCESS;
670 
671 	open c1;
672 		fetch c1 into X_ROWID;
673 	if (c1%notfound) then
674 	close c1;
675     INSERT_ROW (
676        X_ROWID,
677        X_TST_RSLT_DTLS_ID,
678        X_TEST_RESULTS_ID,
679        X_TEST_SEGMENT_ID,
680        X_TEST_SCORE,
681       X_MODE );
682      return;
683 	end if;
684 	   close c1;
685 UPDATE_ROW (
686         X_ROWID,
687        X_TST_RSLT_DTLS_ID,
688        X_TEST_RESULTS_ID,
689        X_TEST_SEGMENT_ID,
690        X_TEST_SCORE,
691       X_MODE );
692 
693 --Standard call to get message count and if count is 1, get message info.
694 FND_MSG_PUB.Count_And_Get(
695     p_encoded => FND_API.G_FALSE,
696     p_count => x_msg_count,
697     p_data  => x_msg_data);
698 
699 EXCEPTION
700         WHEN FND_API.G_EXC_ERROR THEN
701        		ROLLBACK TO update_test_result_details;
702 	        x_return_status := FND_API.G_RET_STS_ERROR;
703                 FND_MSG_PUB.Count_And_Get(
704 				p_encoded => FND_API.G_FALSE,
705                                 p_count => x_msg_count,
706                                 p_data  => x_msg_data);
707 
708         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
709 		ROLLBACK TO update_test_result_details;
710                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
711                 FND_MSG_PUB.Count_And_Get(
712 				p_encoded => FND_API.G_FALSE,
713                                 p_count => x_msg_count,
714                                 p_data  => x_msg_data);
715         WHEN OTHERS THEN
716 		ROLLBACK TO update_test_result_details;
717                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
718 
719 		FND_MESSAGE.SET_NAME('IGS', 'HZ_API_OTHERS_EXCEP');
720                 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
721                 FND_MSG_PUB.ADD;
722 
723                 FND_MSG_PUB.Count_And_Get(
724 				p_encoded => FND_API.G_FALSE,
725                                 p_count => x_msg_count,
726                                 p_data  => x_msg_data);
727 end ADD_ROW;
728 END IGS_SS_TST_RSLT_DTLS_PKG;