[Home] [Help]
PACKAGE BODY: APPS.IGS_AS_SUA_SES_ATTS_PKG
Source
1 PACKAGE BODY igs_as_sua_ses_atts_pkg AS
2 /* $Header: IGSDI80B.pls 120.0 2005/07/05 11:54:59 appldev noship $ */
3
4 l_rowid VARCHAR2(25);
5 old_references igs_as_sua_ses_atts%ROWTYPE;
6 new_references igs_as_sua_ses_atts%ROWTYPE;
7
8 PROCEDURE set_column_values (
9 p_action IN VARCHAR2,
10 x_rowid IN VARCHAR2,
11 x_person_id IN NUMBER,
12 x_course_cd IN VARCHAR2,
13 x_uoo_id IN NUMBER,
14 x_session_name IN VARCHAR2,
15 x_attendance_flag IN VARCHAR2,
16 x_creation_date IN DATE,
17 x_created_by IN NUMBER,
18 x_last_update_date IN DATE,
19 x_last_updated_by IN NUMBER,
20 x_last_update_login IN NUMBER
21 ) AS
22 /*
23 || Created By :
24 || Created On : 15-OCT-2003
25 || Purpose : Initialises the Old and New references for the columns of the table.
26 || Known limitations, enhancements or remarks :
27 || Change History :
28 || Who When What
29 || (reverse chronological order - newest change first)
30 */
31
32 CURSOR cur_old_ref_values IS
33 SELECT *
34 FROM igs_as_sua_ses_atts
35 WHERE rowid = x_rowid;
36
37 BEGIN
38
39 l_rowid := x_rowid;
40
41 -- Code for setting the Old and New Reference Values.
42 -- Populate Old Values.
43 OPEN cur_old_ref_values;
44 FETCH cur_old_ref_values INTO old_references;
45 IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
46 CLOSE cur_old_ref_values;
47 fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
48 igs_ge_msg_stack.add;
49 app_exception.raise_exception;
50 RETURN;
51 END IF;
52 CLOSE cur_old_ref_values;
53
54 -- Populate New Values.
55 new_references.person_id := x_person_id;
56 new_references.course_cd := x_course_cd;
57 new_references.uoo_id := x_uoo_id;
58 new_references.session_name := x_session_name;
59 new_references.attendance_flag := x_attendance_flag;
60
61 IF (p_action = 'UPDATE') THEN
62 new_references.creation_date := old_references.creation_date;
63 new_references.created_by := old_references.created_by;
64 ELSE
65 new_references.creation_date := x_creation_date;
66 new_references.created_by := x_created_by;
67 END IF;
68
69 new_references.last_update_date := x_last_update_date;
70 new_references.last_updated_by := x_last_updated_by;
71 new_references.last_update_login := x_last_update_login;
72
73 END set_column_values;
74
75 PROCEDURE check_parent_existance AS
76 /*
77 || Created By : manu.srinivasan
78 || Created On : 28-JAN-2002
79 || Purpose : Checks for the existance of Parent records.
80 || Known limitations, enhancements or remarks :
81 || Change History :
82 || Who When What
83 || (reverse chronological order - newest change first)
84 */
85 BEGIN
86
87 IF NOT igs_as_usec_sessns_pkg.get_pk_for_validation (
88 x_session_name => new_references.session_name,
89 x_uoo_id => new_references.uoo_id
90 ) THEN
91 fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
92 FND_MSG_PUB.ADD;
93 RAISE FND_API.G_EXC_ERROR;
94 END IF;
95
96 IF NOT igs_en_su_Attempt_pkg.get_pk_for_validation(x_person_id => new_references.person_id ,
97 x_course_cd => new_references.course_cd,
98 x_uoo_id => new_references.uoo_id)
99 THEN
100 fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
101 FND_MSG_PUB.ADD;
102 RAISE FND_API.G_EXC_ERROR;
103 END IF;
104
105 END check_parent_existance;
106
107
108 FUNCTION get_pk_for_validation (
109 x_person_id IN NUMBER,
110 x_course_cd IN VARCHAR2,
111 x_uoo_id IN NUMBER,
112 x_session_name IN VARCHAR2
113 ) RETURN BOOLEAN AS
114 /*
115 || Created By :
116 || Created On : 15-OCT-2003
117 || Purpose : Validates the Primary Key of the table.
118 || Known limitations, enhancements or remarks :
119 || Change History :
120 || Who When What
121 || (reverse chronological order - newest change first)
122 */
123 CURSOR cur_rowid IS
124 SELECT rowid
125 FROM igs_as_sua_ses_atts
126 WHERE person_id = x_person_id
127 AND course_cd = x_course_cd
128 AND uoo_id = x_uoo_id
129 AND session_name = x_session_name
130 FOR UPDATE NOWAIT;
131
132 lv_rowid cur_rowid%RowType;
133
134 BEGIN
135
136 OPEN cur_rowid;
137 FETCH cur_rowid INTO lv_rowid;
138 IF (cur_rowid%FOUND) THEN
139 CLOSE cur_rowid;
140 RETURN(TRUE);
141 ELSE
142 CLOSE cur_rowid;
143 RETURN(FALSE);
144 END IF;
145
146 END get_pk_for_validation;
147
148
149 PROCEDURE before_dml (
150 p_action IN VARCHAR2,
151 x_rowid IN VARCHAR2,
152 x_person_id IN NUMBER,
153 x_course_cd IN VARCHAR2,
154 x_uoo_id IN NUMBER,
155 x_session_name IN VARCHAR2,
156 x_attendance_flag IN VARCHAR2,
157 x_creation_date IN DATE,
158 x_created_by IN NUMBER,
159 x_last_update_date IN DATE,
160 x_last_updated_by IN NUMBER,
161 x_last_update_login IN NUMBER
162 ) AS
163 /*
164 || Created By :
165 || Created On : 15-OCT-2003
166 || Purpose : Initialises the columns, Checks Constraints, Calls the
167 || Trigger Handlers for the table, before any DML operation.
168 || Known limitations, enhancements or remarks :
169 || Change History :
170 || Who When What
171 || (reverse chronological order - newest change first)
172 */
173 BEGIN
174
175 set_column_values (
176 p_action,
177 x_rowid,
178 x_person_id,
179 x_course_cd,
180 x_uoo_id,
181 x_session_name,
182 x_attendance_flag,
183 x_creation_date,
184 x_created_by,
185 x_last_update_date,
186 x_last_updated_by,
187 x_last_update_login
188 );
189
190 IF (p_action = 'INSERT') THEN
191 -- Call all the procedures related to Before Insert.
192 IF ( get_pk_for_validation(
193 new_references.person_id,
194 new_references.course_cd,
195 new_references.uoo_id,
196 new_references.session_name
197 )
198 ) THEN
199 fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
200 igs_ge_msg_stack.add;
201 app_exception.raise_exception;
202 END IF;
203 check_parent_existance;
204 ELSIF (p_action = 'VALIDATE_INSERT') THEN
205 -- Call all the procedures related to Before Insert.
206 IF ( get_pk_for_validation (
207 new_references.person_id,
208 new_references.course_cd,
209 new_references.uoo_id,
210 new_references.session_name
211 )
212 ) THEN
213 fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
214 igs_ge_msg_stack.add;
215 app_exception.raise_exception;
216 END IF;
217 ELSIF (p_action = 'UPDATE') THEN
218 check_parent_existance;
219 END IF;
220
221 END before_dml;
222
223
224 PROCEDURE insert_row (
225 x_rowid IN OUT NOCOPY VARCHAR2,
226 x_person_id IN NUMBER,
227 x_course_cd IN VARCHAR2,
228 x_uoo_id IN NUMBER,
229 x_session_name IN VARCHAR2,
230 x_attendance_flag IN VARCHAR2,
231 x_mode IN VARCHAR2 ,
232 X_RETURN_STATUS OUT NOCOPY VARCHAR2 ,
233 X_MSG_DATA OUT NOCOPY VARCHAR2 ,
234 X_MSG_COUNT OUT NOCOPY NUMBER
235 ) AS
236 /*
237 || Created By :
238 || Created On : 15-OCT-2003
239 || Purpose : Handles the INSERT DML logic for the table.
240 || Known limitations, enhancements or remarks :
241 || Change History :
242 || Who When What
243 || (reverse chronological order - newest change first)
244 */
245
246 x_last_update_date DATE;
247 x_last_updated_by NUMBER;
248 x_last_update_login NUMBER;
249
250 BEGIN
251 FND_MSG_PUB.initialize;
252
253 x_last_update_date := SYSDATE;
254 IF (x_mode = 'I') THEN
255 x_last_updated_by := 1;
256 x_last_update_login := 0;
257 ELSIF (X_MODE IN ('R', 'S')) THEN
258 x_last_updated_by := fnd_global.user_id;
259 IF (x_last_updated_by IS NULL) THEN
260 x_last_updated_by := -1;
261 END IF;
262 x_last_update_login := fnd_global.login_id;
263 IF (x_last_update_login IS NULL) THEN
264 x_last_update_login := -1;
265 END IF;
266 ELSE
267 fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
268 fnd_message.set_token ('ROUTINE', 'IGS_AS_SUA_SES_ATTS_PKG.INSERT_ROW');
269 igs_ge_msg_stack.add;
270 app_exception.raise_exception;
271 END IF;
272
273 before_dml(
274 p_action => 'INSERT',
275 x_rowid => x_rowid,
276 x_person_id => x_person_id,
277 x_course_cd => x_course_cd,
278 x_uoo_id => x_uoo_id,
279 x_session_name => x_session_name,
280 x_attendance_flag => x_attendance_flag,
281 x_creation_date => x_last_update_date,
282 x_created_by => x_last_updated_by,
283 x_last_update_date => x_last_update_date,
284 x_last_updated_by => x_last_updated_by,
285 x_last_update_login => x_last_update_login
286 );
287
288 IF (x_mode = 'S') THEN
289 igs_sc_gen_001.set_ctx('R');
290 END IF;
291 INSERT INTO igs_as_sua_ses_atts (
292 person_id,
293 course_cd,
294 uoo_id,
295 session_name,
296 attendance_flag,
297 creation_date,
298 created_by,
299 last_update_date,
300 last_updated_by,
301 last_update_login
302 ) VALUES (
303 new_references.person_id,
304 new_references.course_cd,
305 new_references.uoo_id,
306 new_references.session_name,
307 new_references.attendance_flag,
308 x_last_update_date,
309 x_last_updated_by,
310 x_last_update_date,
311 x_last_updated_by,
312 x_last_update_login
313 ) RETURNING ROWID INTO x_rowid;
314 IF (x_mode = 'S') THEN
315 igs_sc_gen_001.unset_ctx('R');
316 END IF;
317
318
319 -- Initialize API return status to success.
320 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
321 -- Standard call to get message count and if count is 1, get message
322 -- info.
323 FND_MSG_PUB.Count_And_Get(
324 p_encoded => FND_API.G_FALSE,
325 p_count => x_MSG_COUNT,
326 p_data => X_MSG_DATA);
327
328 EXCEPTION
329 WHEN FND_API.G_EXC_ERROR THEN
330 igs_sc_gen_001.unset_ctx('R');
331 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
332 FND_MSG_PUB.Count_And_Get(
333 p_encoded => FND_API.G_FALSE,
334 p_count => x_MSG_COUNT,
335 p_data => X_MSG_DATA);
336 RETURN;
337 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
338 igs_sc_gen_001.unset_ctx('R');
339 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
340 FND_MSG_PUB.Count_And_Get(
341 p_encoded => FND_API.G_FALSE,
342 p_count => x_MSG_COUNT,
343 p_data => X_MSG_DATA);
344 RETURN;
345 WHEN OTHERS THEN
346 igs_sc_gen_001.unset_ctx('R');
347 IF (SQLCODE IN (-28115, -28113, -28111)) THEN
348 FND_MESSAGE.SET_NAME('IGS', 'IGS_SC_POLICY_EXCEPTION');
349 fnd_message.set_token ('ERR_CD', SQLCODE);
350 FND_MSG_PUB.ADD;
351 FND_MSG_PUB.Count_And_Get(
352 p_encoded => FND_API.G_FALSE,
353 p_count => x_MSG_COUNT,
354 p_data => X_MSG_DATA);
355 ELSE
356 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
357 FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
358 FND_MESSAGE.SET_TOKEN('NAME','Insert_Row : '||SQLERRM);
359 FND_MSG_PUB.ADD;
360 FND_MSG_PUB.Count_And_Get(
361 p_encoded => FND_API.G_FALSE,
362 p_count => x_MSG_COUNT,
363 p_data => X_MSG_DATA);
364 END IF;
365 RETURN;
366 END insert_row;
367
368
369 PROCEDURE lock_row (
370 x_rowid IN VARCHAR2,
371 x_person_id IN NUMBER,
372 x_course_cd IN VARCHAR2,
373 x_uoo_id IN NUMBER,
374 x_session_name IN VARCHAR2,
375 x_attendance_flag IN VARCHAR2,
376 X_RETURN_STATUS OUT NOCOPY VARCHAR2 ,
377 X_MSG_DATA OUT NOCOPY VARCHAR2 ,
378 X_MSG_COUNT OUT NOCOPY NUMBER
379 ) AS
380 /*
381 || Created By :
382 || Created On : 15-OCT-2003
383 || Purpose : Handles the LOCK mechanism for the table.
384 || Known limitations, enhancements or remarks :
385 || Change History :
386 || Who When What
387 || (reverse chronological order - newest change first)
388 */
389 CURSOR c1 IS
390 SELECT
391 attendance_flag
392 FROM igs_as_sua_ses_atts
393 WHERE rowid = x_rowid
394 FOR UPDATE NOWAIT;
395
396 tlinfo c1%ROWTYPE;
397
398 BEGIN
399 FND_MSG_PUB.initialize;
400
401 OPEN c1;
402 FETCH c1 INTO tlinfo;
403 IF (c1%notfound) THEN
404 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
405 igs_ge_msg_stack.add;
406 CLOSE c1;
407 app_exception.raise_exception;
408 RETURN;
409 END IF;
410 CLOSE c1;
411
412 IF (
413 (tlinfo.attendance_flag = x_attendance_flag)
414 ) THEN
415 NULL;
416 ELSE
417 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
418 igs_ge_msg_stack.add;
419 app_exception.raise_exception;
420 END IF;
421
422 -- Initialize API return status to success.
423 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
424 -- Standard call to get message count and if count is 1, get message
425 -- info.
426 FND_MSG_PUB.Count_And_Get(
427 p_encoded => FND_API.G_FALSE,
428 p_count => x_MSG_COUNT,
429 p_data => X_MSG_DATA);
430
431 EXCEPTION
432 WHEN FND_API.G_EXC_ERROR THEN
433 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
434 FND_MSG_PUB.Count_And_Get(
435 p_encoded => FND_API.G_FALSE,
436 p_count => x_MSG_COUNT,
437 p_data => X_MSG_DATA);
438 RETURN;
439 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
440 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
441 FND_MSG_PUB.Count_And_Get(
442 p_encoded => FND_API.G_FALSE,
443 p_count => x_MSG_COUNT,
444 p_data => X_MSG_DATA);
445 RETURN;
446 WHEN OTHERS THEN
447 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
448 FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
449 FND_MESSAGE.SET_TOKEN('NAME','lock_row : '||SQLERRM);
450 FND_MSG_PUB.ADD;
451 FND_MSG_PUB.Count_And_Get(
452 p_encoded => FND_API.G_FALSE,
453 p_count => x_MSG_COUNT,
454 p_data => X_MSG_DATA);
455 RETURN;
456
457
458 END lock_row;
459
460
461 PROCEDURE update_row (
462 x_rowid IN VARCHAR2,
463 x_person_id IN NUMBER,
464 x_course_cd IN VARCHAR2,
465 x_uoo_id IN NUMBER,
466 x_session_name IN VARCHAR2,
467 x_attendance_flag IN VARCHAR2,
468 x_mode IN VARCHAR2 ,
469 X_RETURN_STATUS OUT NOCOPY VARCHAR2 ,
470 X_MSG_DATA OUT NOCOPY VARCHAR2 ,
471 X_MSG_COUNT OUT NOCOPY NUMBER
472 ) AS
473 /*
474 || Created By :
475 || Created On : 15-OCT-2003
476 || Purpose : Handles the UPDATE DML logic for the table.
477 || Known limitations, enhancements or remarks :
478 || Change History :
479 || Who When What
480 || (reverse chronological order - newest change first)
481 */
482 x_last_update_date DATE ;
483 x_last_updated_by NUMBER;
484 x_last_update_login NUMBER;
485
486 BEGIN
487 FND_MSG_PUB.initialize;
488
489 x_last_update_date := SYSDATE;
490 IF (X_MODE = 'I') THEN
491 x_last_updated_by := 1;
492 x_last_update_login := 0;
493 ELSIF (X_MODE IN ('R', 'S')) THEN
494 x_last_updated_by := fnd_global.user_id;
495 IF x_last_updated_by IS NULL THEN
496 x_last_updated_by := -1;
497 END IF;
498 x_last_update_login := fnd_global.login_id;
499 IF (x_last_update_login IS NULL) THEN
500 x_last_update_login := -1;
501 END IF;
502 ELSE
503 fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
504 fnd_message.set_token ('ROUTINE', 'IGS_AS_SUA_SES_ATTS_PKG.UPDATE_ROW');
505 igs_ge_msg_stack.add;
506 app_exception.raise_exception;
507 END IF;
508
509 before_dml(
510 p_action => 'UPDATE',
511 x_rowid => x_rowid,
512 x_person_id => x_person_id,
513 x_course_cd => x_course_cd,
514 x_uoo_id => x_uoo_id,
515 x_session_name => x_session_name,
516 x_attendance_flag => x_attendance_flag,
517 x_creation_date => x_last_update_date,
518 x_created_by => x_last_updated_by,
519 x_last_update_date => x_last_update_date,
520 x_last_updated_by => x_last_updated_by,
521 x_last_update_login => x_last_update_login
522 );
523
524 IF (x_mode = 'S') THEN
525 igs_sc_gen_001.set_ctx('R');
526 END IF;
527 UPDATE igs_as_sua_ses_atts
528 SET
529 attendance_flag = new_references.attendance_flag,
530 last_update_date = x_last_update_date,
531 last_updated_by = x_last_updated_by,
532 last_update_login = x_last_update_login
533 WHERE rowid = x_rowid;
534
535 IF (SQL%NOTFOUND) THEN
536 fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
537 igs_ge_msg_stack.add;
538 igs_sc_gen_001.unset_ctx('R');
539 app_exception.raise_exception;
540 END IF;
541 IF (x_mode = 'S') THEN
542 igs_sc_gen_001.unset_ctx('R');
543 END IF;
544
545
546 -- Initialize API return status to success.
547 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
548 -- Standard call to get message count and if count is 1, get message
549 -- info.
550 FND_MSG_PUB.Count_And_Get(
551 p_encoded => FND_API.G_FALSE,
552 p_count => x_MSG_COUNT,
553 p_data => X_MSG_DATA);
554
555 EXCEPTION
556 WHEN FND_API.G_EXC_ERROR THEN
557 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
558 FND_MSG_PUB.Count_And_Get(
559 p_encoded => FND_API.G_FALSE,
560 p_count => x_MSG_COUNT,
561 p_data => X_MSG_DATA);
562 RETURN;
563 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
564 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
565 FND_MSG_PUB.Count_And_Get(
566 p_encoded => FND_API.G_FALSE,
567 p_count => x_MSG_COUNT,
568 p_data => X_MSG_DATA);
569 RETURN;
570 WHEN OTHERS THEN
571 igs_sc_gen_001.unset_ctx('R');
572 IF (SQLCODE = (-28115)) THEN
573 FND_MESSAGE.SET_NAME('IGS', 'IGS_SC_POLICY_EXCEPTION');
574 fnd_message.set_token ('ERR_CD', SQLCODE);
575 FND_MSG_PUB.ADD;
576 FND_MSG_PUB.Count_And_Get(
577 p_encoded => FND_API.G_FALSE,
578 p_count => x_MSG_COUNT,
579 p_data => X_MSG_DATA);
580 ELSE
581 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
582 FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
583 FND_MESSAGE.SET_TOKEN('NAME','Update_Row : '||SQLERRM);
584 FND_MSG_PUB.ADD;
585 FND_MSG_PUB.Count_And_Get(
586 p_encoded => FND_API.G_FALSE,
587 p_count => x_MSG_COUNT,
588 p_data => X_MSG_DATA);
589
590 END IF;
591 RETURN;
592 END update_row;
593
594
595 PROCEDURE add_row (
596 x_rowid IN OUT NOCOPY VARCHAR2,
597 x_person_id IN NUMBER,
598 x_course_cd IN VARCHAR2,
599 x_uoo_id IN NUMBER,
600 x_session_name IN VARCHAR2,
601 x_attendance_flag IN VARCHAR2,
602 x_mode IN VARCHAR2 ,
603 X_RETURN_STATUS OUT NOCOPY VARCHAR2 ,
604 X_MSG_DATA OUT NOCOPY VARCHAR2 ,
605 X_MSG_COUNT OUT NOCOPY NUMBER
606 ) AS
607 /*
608 || Created By :
609 || Created On : 15-OCT-2003
610 || Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
611 || Known limitations, enhancements or remarks :
612 || Change History :
613 || Who When What
614 || (reverse chronological order - newest change first)
615 */
616 CURSOR c1 IS
617 SELECT rowid
618 FROM igs_as_sua_ses_atts
619 WHERE person_id = x_person_id
620 AND course_cd = x_course_cd
621 AND uoo_id = x_uoo_id
622 AND session_name = x_session_name;
623
624 BEGIN
625 FND_MSG_PUB.initialize;
626
627 OPEN c1;
628 FETCH c1 INTO x_rowid;
629 IF (c1%NOTFOUND) THEN
630 CLOSE c1;
631
632 insert_row (
633 x_rowid,
634 x_person_id,
635 x_course_cd,
636 x_uoo_id,
637 x_session_name,
638 x_attendance_flag,
639 x_mode ,
640 x_return_status,
641 x_msg_data,
642 x_msg_count
643 );
644 RETURN;
645 END IF;
646 CLOSE c1;
647
648 update_row (
649 x_rowid,
650 x_person_id,
651 x_course_cd,
652 x_uoo_id,
653 x_session_name,
654 x_attendance_flag,
655 x_mode ,
656 x_return_status,
657 x_msg_data,
658 x_msg_count
659 );
660
661 -- Initialize API return status to success.
662 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
663 -- Standard call to get message count and if count is 1, get message
664 -- info.
665 FND_MSG_PUB.Count_And_Get(
666 p_encoded => FND_API.G_FALSE,
667 p_count => x_MSG_COUNT,
668 p_data => X_MSG_DATA);
669
670 EXCEPTION
671 WHEN FND_API.G_EXC_ERROR THEN
672 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
673 FND_MSG_PUB.Count_And_Get(
674 p_encoded => FND_API.G_FALSE,
675 p_count => x_MSG_COUNT,
676 p_data => X_MSG_DATA);
677 RETURN;
678 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
679 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
680 FND_MSG_PUB.Count_And_Get(
681 p_encoded => FND_API.G_FALSE,
682 p_count => x_MSG_COUNT,
683 p_data => X_MSG_DATA);
684 RETURN;
685 WHEN OTHERS THEN
686 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
687 FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
688 FND_MESSAGE.SET_TOKEN('NAME','Insert_Row : '||SQLERRM);
689 FND_MSG_PUB.ADD;
690 FND_MSG_PUB.Count_And_Get(
691 p_encoded => FND_API.G_FALSE,
692 p_count => x_MSG_COUNT,
693 p_data => X_MSG_DATA);
694 RETURN;
695
696 END add_row;
697
698
699 PROCEDURE delete_row (
700 x_rowid IN VARCHAR2,
701 x_mode IN VARCHAR2 ,
702 X_RETURN_STATUS OUT NOCOPY VARCHAR2 ,
703 X_MSG_DATA OUT NOCOPY VARCHAR2 ,
704 X_MSG_COUNT OUT NOCOPY NUMBER
705 ) AS
706 /*
707 || Created By :
708 || Created On : 15-OCT-2003
709 || Purpose : Handles the DELETE DML logic for the table.
710 || Known limitations, enhancements or remarks :
711 || Change History :
712 || Who When What
713 || (reverse chronological order - newest change first)
714 */
715 BEGIN
716
717 FND_MSG_PUB.initialize;
718
719 before_dml (
720 p_action => 'DELETE',
721 x_rowid => x_rowid
722 );
723
724 IF (x_mode = 'S') THEN
725 igs_sc_gen_001.set_ctx('R');
726 END IF;
727 DELETE FROM igs_as_sua_ses_atts
728 WHERE rowid = x_rowid;
729
730 IF (SQL%NOTFOUND) THEN
731 fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
732 igs_ge_msg_stack.add;
733 igs_sc_gen_001.unset_ctx('R');
734 app_exception.raise_exception;
735 END IF;
736 IF (x_mode = 'S') THEN
737 igs_sc_gen_001.unset_ctx('R');
738 END IF;
739
740
741 -- Initialize API return status to success.
742 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
743 -- Standard call to get message count and if count is 1, get message
744 -- info.
745 FND_MSG_PUB.Count_And_Get(
746 p_encoded => FND_API.G_FALSE,
747 p_count => x_MSG_COUNT,
748 p_data => X_MSG_DATA);
749
750 EXCEPTION
751 WHEN FND_API.G_EXC_ERROR THEN
752 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
753 FND_MSG_PUB.Count_And_Get(
754 p_encoded => FND_API.G_FALSE,
755 p_count => x_MSG_COUNT,
756 p_data => X_MSG_DATA);
757 RETURN;
758 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
759 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
760 FND_MSG_PUB.Count_And_Get(
761 p_encoded => FND_API.G_FALSE,
762 p_count => x_MSG_COUNT,
763 p_data => X_MSG_DATA);
764 RETURN;
765 WHEN OTHERS THEN
766 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
767 FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
768 FND_MESSAGE.SET_TOKEN('NAME','Insert_Row : '||SQLERRM);
769 FND_MSG_PUB.ADD;
770 FND_MSG_PUB.Count_And_Get(
771 p_encoded => FND_API.G_FALSE,
772 p_count => x_MSG_COUNT,
773 p_data => X_MSG_DATA);
774 RETURN;
775
776 END delete_row;
777
778 PROCEDURE get_fk_igs_as_usec_sessns(
779 x_session_name igs_as_usec_sessns.session_name%TYPE,
780 x_uoo_id igs_as_usec_sessns.uoo_id%TYPE
781 )
782 AS
783 /*
784 || Created By : manu.srinivasan
785 || Created On : 28-JAN-2002
786 || Purpose : Called by the parent table upon delete
787 || Known limitations, enhancements or remarks :
788 || Change History :
789 || Who When What
790 || (reverse chronological order - newest change first)
791 */
792 CURSOR cur_rowid IS
793 SELECT rowid
794 FROM igs_as_sua_ses_atts
795 WHERE session_name = x_session_name
796 AND uoo_id = x_uoo_id;
797 lv_rowid cur_rowid%ROWTYPE;
798
799 BEGIN
800
801 OPEN cur_rowid;
802 FETCH cur_rowid INTO lv_rowid;
803 IF (cur_rowid%FOUND) THEN
804 Fnd_Message.Set_Name ('IGS', 'IGS_AS_SES_ATTS_USEC_SESS_FK');
805 IGS_GE_MSG_STACK.ADD;
806 CLOSE cur_rowid;
807 APP_EXCEPTION.RAISE_EXCEPTION;
808 RETURN;
809 END IF;
810 CLOSE cur_rowid;
811
812 END get_fk_igs_as_usec_sessns;
813
814 PROCEDURE get_fk_igs_en_su_Attempt(
815 x_person_id igs_en_su_attempt.person_id%TYPE,
816 x_course_cd igs_en_su_attempt.course_cd%TYPE,
817 x_uoo_id igs_en_su_attempt.uoo_id%TYPE
818 )
819 AS
820 /*
821 || Created By : manu.srinivasan
822 || Created On : 28-JAN-2002
823 || Purpose : Called by the parent table upon delete
824 || Known limitations, enhancements or remarks :
825 || Change History :
826 || Who When What
827 || (reverse chronological order - newest change first)
828 */
829 CURSOR cur_rowid IS
830 SELECT rowid
831 FROM igs_as_sua_ses_atts
832 WHERE person_id = x_person_id
833 AND course_cd = x_course_cd
834 AND uoo_id = x_uoo_id;
835
836 lv_rowid cur_rowid%ROWTYPE;
837
838 BEGIN
839
840 OPEN cur_rowid;
841 FETCH cur_rowid INTO lv_rowid;
842 IF (cur_rowid%FOUND) THEN
843 Fnd_Message.Set_Name ('IGS', 'IGS_AS_SES_ATTS_SUA_FK');
844 IGS_GE_MSG_STACK.ADD;
845 CLOSE cur_rowid;
846 APP_EXCEPTION.RAISE_EXCEPTION;
847 RETURN;
848 END IF;
849 CLOSE cur_rowid;
850
851 END get_fk_igs_en_su_Attempt;
852
853 END igs_as_sua_ses_atts_pkg;