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;