DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_APPR_GRD_SCH_PKG

Source


1 PACKAGE BODY igs_as_appr_grd_sch_pkg AS
2 /* $Header: IGSDI58B.pls 115.4 2002/11/28 23:25:25 nsidana noship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_as_appr_grd_sch%ROWTYPE;
6   new_references igs_as_appr_grd_sch%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
11     x_unit_cd                           IN     VARCHAR2    DEFAULT NULL,
12     x_version_number                    IN     NUMBER      DEFAULT NULL,
13     x_assessment_type                   IN     VARCHAR2    DEFAULT NULL,
14     x_grading_schema_cd                 IN     VARCHAR2    DEFAULT NULL,
15     x_gs_version_number                 IN     NUMBER      DEFAULT NULL,
16     x_default_ind                       IN     VARCHAR2    DEFAULT NULL,
17     x_closed_ind                        IN     VARCHAR2    DEFAULT NULL,
18     x_creation_date                     IN     DATE        DEFAULT NULL,
19     x_created_by                        IN     NUMBER      DEFAULT NULL,
20     x_last_update_date                  IN     DATE        DEFAULT NULL,
21     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
22     x_last_update_login                 IN     NUMBER      DEFAULT NULL
23   ) AS
24   /*
25   ||  Created By : [email protected]
26   ||  Created On : 27-DEC-2001
27   ||  Purpose : Initialises the Old and New references for the columns of the table.
28   ||  Known limitations, enhancements or remarks :
29   ||  Change History :
30   ||  Who             When            What
31   ||  (reverse chronological order - newest change first)
32   */
33 
34     CURSOR cur_old_ref_values IS
35       SELECT   *
36       FROM     igs_as_appr_grd_sch
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       igs_ge_msg_stack.add;
51       app_exception.raise_exception;
52       RETURN;
53     END IF;
54     CLOSE cur_old_ref_values;
55 
56     -- Populate New Values.
57     new_references.unit_cd                           := x_unit_cd;
58     new_references.version_number                    := x_version_number;
59     new_references.assessment_type                   := x_assessment_type;
60     new_references.grading_schema_cd                 := x_grading_schema_cd;
61     new_references.gs_version_number                 := x_gs_version_number;
62     new_references.default_ind                       := x_default_ind;
63     new_references.closed_ind                        := x_closed_ind;
64 
65     IF (p_action = 'UPDATE') THEN
66       new_references.creation_date                   := old_references.creation_date;
67       new_references.created_by                      := old_references.created_by;
68     ELSE
69       new_references.creation_date                   := x_creation_date;
70       new_references.created_by                      := x_created_by;
71     END IF;
72 
73     new_references.last_update_date                  := x_last_update_date;
74     new_references.last_updated_by                   := x_last_updated_by;
75     new_references.last_update_login                 := x_last_update_login;
76 
77   END set_column_values;
78 
79 
80   PROCEDURE check_parent_existance AS
81   /*
82   ||  Created By : [email protected]
83   ||  Created On : 27-DEC-2001
84   ||  Purpose : Checks for the existance of Parent records.
85   ||  Known limitations, enhancements or remarks :
86   ||  Change History :
87   ||  Who             When            What
88   ||  (reverse chronological order - newest change first)
89   */
90   BEGIN
91 
92     IF (((old_references.assessment_type = new_references.assessment_type)) OR
93         ((new_references.assessment_type IS NULL))) THEN
94       NULL;
95     ELSIF NOT igs_as_assessmnt_typ_pkg.get_pk_for_validation (
96                 new_references.assessment_type
97               ) THEN
98       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
99       igs_ge_msg_stack.add;
100       app_exception.raise_exception;
101     END IF;
102 
103     IF (((old_references.unit_cd = new_references.unit_cd) AND
104          (old_references.version_number = new_references.version_number)) OR
105         ((new_references.unit_cd IS NULL) OR
106          (new_references.version_number IS NULL))) THEN
107       NULL;
108     ELSIF NOT igs_ps_unit_ver_pkg.get_pk_for_validation (
109                 new_references.unit_cd,
110                 new_references.version_number
111               ) THEN
112       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
113       igs_ge_msg_stack.add;
114       app_exception.raise_exception;
115     END IF;
116 
117     IF (((old_references.grading_schema_cd = new_references.grading_schema_cd) AND
118          (old_references.gs_version_number = new_references.gs_version_number)) OR
119         ((new_references.grading_schema_cd IS NULL) OR
120          (new_references.gs_version_number IS NULL))) THEN
121       NULL;
122     ELSIF NOT igs_as_grd_schema_pkg.get_pk_for_validation (
123                 new_references.grading_schema_cd,
124                 new_references.gs_version_number
125               ) THEN
126       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
127       igs_ge_msg_stack.add;
128       app_exception.raise_exception;
129     END IF;
130 
131   END check_parent_existance;
132 
133   PROCEDURE check_child_existence AS
134   /*
135   ||  Created By : Nishikant
136   ||  Created On : 31-DEC-2001
137   ||  Purpose : It checks for the approved assessment grading schema
138   ||            is available at unit section level and unit offering
139   ||            level or not.
140   ||  Known limitations, enhancements or remarks :
141   ||  Change History :
142   ||  Who             When            What
143   ||  (reverse chronological order - newest change first)
144   */
145   CURSOR c_us_ass_item IS
146     SELECT COUNT(ai.assessment_type)
147     FROM   igs_ps_unitass_item uai,
148            igs_as_assessmnt_itm ai,
149            igs_ps_unit_ofr_opt uoo
150     WHERE  uai.ass_id = ai.ass_id AND
151            uai.uoo_id = uoo.uoo_id AND
152            uoo.unit_cd = old_references.unit_cd AND
153            uoo.version_number = old_references.version_number AND
154            ai.assessment_type = old_references.assessment_type AND
155            uai.grading_schema_cd = old_references.grading_schema_cd AND
156            uai.gs_version_number = old_references.gs_version_number AND
157            uai.logical_delete_dt IS NULL;
158   CURSOR c_u_ass_item IS
159     SELECT COUNT(ai.assessment_type)
160     FROM   igs_as_unitass_item uai,
161            igs_as_assessmnt_itm ai
162     WHERE  uai.ass_id = ai.ass_id AND
163            uai.unit_cd = old_references.unit_cd AND
164            uai.version_number = old_references.version_number AND
165            ai.assessment_type = old_references.assessment_type AND
166            uai.grading_schema_cd = old_references.grading_schema_cd AND
167            uai.gs_version_number = old_references.gs_version_number AND
168            uai.logical_delete_dt IS NULL;
169 
170   l_ass_count  NUMBER DEFAULT 0;
171 
172   BEGIN
173 -- checks for the assesment type is available at unit section level or not
174     OPEN c_us_ass_item;
175     FETCH c_us_ass_item INTO l_ass_count;
176     IF l_ass_count <> 0 THEN
177        CLOSE c_us_ass_item;
178        fnd_message.set_name ('IGS', 'IGS_AS_UNAS_AAGS_FK');
179        igs_ge_msg_stack.add;
180        app_exception.raise_exception;
181     END IF;
182     CLOSE c_us_ass_item;
183 -- checks for the assesment type is available at unit level or not
184     OPEN c_u_ass_item;
185     FETCH c_u_ass_item INTO l_ass_count;
186     IF l_ass_count <> 0 THEN
187        CLOSE c_u_ass_item;
188        fnd_message.set_name ('IGS', 'IGS_AS_UAI_AAGS_FK');
189        igs_ge_msg_stack.add;
190        app_exception.raise_exception;
191     END IF;
192     CLOSE  c_u_ass_item;
193   END check_child_existence;
194 
195   FUNCTION get_pk_for_validation (
196     x_assessment_type                   IN     VARCHAR2,
197     x_grading_schema_cd                 IN     VARCHAR2,
198     x_gs_version_number                 IN     NUMBER,
199     x_unit_cd                           IN     VARCHAR2,
200     x_version_number                    IN     NUMBER
201   ) RETURN BOOLEAN AS
202   /*
203   ||  Created By : [email protected]
204   ||  Created On : 27-DEC-2001
205   ||  Purpose : Validates the Primary Key of the table.
206   ||  Known limitations, enhancements or remarks :
207   ||  Change History :
208   ||  Who             When            What
209   ||  (reverse chronological order - newest change first)
210   */
211     CURSOR cur_rowid IS
212       SELECT   rowid
213       FROM     igs_as_appr_grd_sch
214       WHERE    assessment_type = x_assessment_type
215       AND      grading_schema_cd = x_grading_schema_cd
216       AND      gs_version_number = x_gs_version_number
217       AND      unit_cd = x_unit_cd
218       AND      version_number = x_version_number
219       FOR UPDATE NOWAIT;
220 
221     lv_rowid cur_rowid%RowType;
222 
223   BEGIN
224 
225     OPEN cur_rowid;
226     FETCH cur_rowid INTO lv_rowid;
227     IF (cur_rowid%FOUND) THEN
228       CLOSE cur_rowid;
229       RETURN(TRUE);
230     ELSE
231       CLOSE cur_rowid;
232       RETURN(FALSE);
233     END IF;
234 
235   END get_pk_for_validation;
236 
237 
238   PROCEDURE get_fk_igs_as_assessmnt_typ (
239     x_assessment_type                   IN     VARCHAR2
240   ) AS
241   /*
242   ||  Created By : [email protected]
243   ||  Created On : 27-DEC-2001
244   ||  Purpose : Validates the Foreign Keys for the table.
245   ||  Known limitations, enhancements or remarks :
246   ||  Change History :
247   ||  Who             When            What
248   ||  (reverse chronological order - newest change first)
249   */
250     CURSOR cur_rowid IS
251       SELECT   rowid
252       FROM     igs_as_appr_grd_sch
256 
253       WHERE   ((assessment_type = x_assessment_type));
254 
255     lv_rowid cur_rowid%RowType;
257   BEGIN
258 
259     OPEN cur_rowid;
260     FETCH cur_rowid INTO lv_rowid;
261     IF (cur_rowid%FOUND) THEN
262       CLOSE cur_rowid;
263       fnd_message.set_name ('IGS', 'IGS_AS_AAGS_ATYP_FK');
264       igs_ge_msg_stack.add;
265       app_exception.raise_exception;
266       RETURN;
267     END IF;
268     CLOSE cur_rowid;
269 
270   END get_fk_igs_as_assessmnt_typ;
271 
272 
273   PROCEDURE get_fk_igs_ps_unit_ver (
274     x_unit_cd                           IN     VARCHAR2,
275     x_version_number                    IN     NUMBER
276   ) AS
277   /*
278   ||  Created By : [email protected]
279   ||  Created On : 27-DEC-2001
280   ||  Purpose : Validates the Foreign Keys for the table.
281   ||  Known limitations, enhancements or remarks :
282   ||  Change History :
283   ||  Who             When            What
284   ||  (reverse chronological order - newest change first)
285   */
286     CURSOR cur_rowid IS
287       SELECT   rowid
288       FROM     igs_as_appr_grd_sch
289       WHERE   ((unit_cd = x_unit_cd) AND
290                (version_number = x_version_number));
291 
292     lv_rowid cur_rowid%RowType;
293 
294   BEGIN
295 
296     OPEN cur_rowid;
297     FETCH cur_rowid INTO lv_rowid;
298     IF (cur_rowid%FOUND) THEN
299       CLOSE cur_rowid;
300       fnd_message.set_name ('IGS', 'IGS_AS_AAGS_PUV_FK');
301       igs_ge_msg_stack.add;
302       app_exception.raise_exception;
303       RETURN;
304     END IF;
305     CLOSE cur_rowid;
306 
307   END get_fk_igs_ps_unit_ver;
308 
309 
310   PROCEDURE get_fk_igs_as_grd_schema (
311     x_grading_schema_cd                 IN     VARCHAR2,
312     x_version_number                    IN     NUMBER
313   ) AS
314   /*
315   ||  Created By : [email protected]
316   ||  Created On : 27-DEC-2001
317   ||  Purpose : Validates the Foreign Keys for the table.
318   ||  Known limitations, enhancements or remarks :
319   ||  Change History :
320   ||  Who             When            What
321   ||  (reverse chronological order - newest change first)
322   */
323     CURSOR cur_rowid IS
324       SELECT   rowid
325       FROM     igs_as_appr_grd_sch
326       WHERE   ((grading_schema_cd = x_grading_schema_cd) AND
327                (gs_version_number = x_version_number));
328 
329     lv_rowid cur_rowid%RowType;
330 
331   BEGIN
332 
333     OPEN cur_rowid;
334     FETCH cur_rowid INTO lv_rowid;
335     IF (cur_rowid%FOUND) THEN
336       CLOSE cur_rowid;
337       fnd_message.set_name ('IGS', 'IGS_AS_AAGS_GS_FK');
338       igs_ge_msg_stack.add;
339       app_exception.raise_exception;
340       RETURN;
341     END IF;
342     CLOSE cur_rowid;
343 
344   END get_fk_igs_as_grd_schema;
345 
346   PROCEDURE before_dml (
347     p_action                            IN     VARCHAR2,
348     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
349     x_unit_cd                           IN     VARCHAR2    DEFAULT NULL,
350     x_version_number                    IN     NUMBER      DEFAULT NULL,
351     x_assessment_type                   IN     VARCHAR2    DEFAULT NULL,
352     x_grading_schema_cd                 IN     VARCHAR2    DEFAULT NULL,
353     x_gs_version_number                 IN     NUMBER      DEFAULT NULL,
354     x_default_ind                       IN     VARCHAR2    DEFAULT NULL,
355     x_closed_ind                        IN     VARCHAR2    DEFAULT NULL,
356     x_creation_date                     IN     DATE        DEFAULT NULL,
357     x_created_by                        IN     NUMBER      DEFAULT NULL,
358     x_last_update_date                  IN     DATE        DEFAULT NULL,
359     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
360     x_last_update_login                 IN     NUMBER      DEFAULT NULL
361   ) AS
362   /*
363   ||  Created By : [email protected]
364   ||  Created On : 27-DEC-2001
365   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
366   ||            Trigger Handlers for the table, before any DML operation.
367   ||  Known limitations, enhancements or remarks :
368   ||  Change History :
369   ||  Who             When            What
370   ||  (reverse chronological order - newest change first)
371   */
372   BEGIN
373 
374     set_column_values (
375       p_action,
376       x_rowid,
377       x_unit_cd,
378       x_version_number,
379       x_assessment_type,
380       x_grading_schema_cd,
381       x_gs_version_number,
382       x_default_ind,
383       x_closed_ind,
384       x_creation_date,
385       x_created_by,
386       x_last_update_date,
387       x_last_updated_by,
388       x_last_update_login
389     );
390 
391     IF (p_action = 'INSERT') THEN
392       -- Call all the procedures related to Before Insert.
393       IF ( get_pk_for_validation(
394              new_references.assessment_type,
395              new_references.grading_schema_cd,
396              new_references.gs_version_number,
397              new_references.unit_cd,
398              new_references.version_number
399            )
400          ) THEN
401         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
402         igs_ge_msg_stack.add;
403         app_exception.raise_exception;
404       END IF;
405       check_parent_existance;
406     ELSIF (p_action = 'DELETE') THEN
407       check_child_existence;
408     ELSIF (p_action = 'UPDATE') THEN
409       -- Call all the procedures related to Before Update.
410       check_parent_existance;
411     ELSIF (p_action = 'VALIDATE_INSERT') THEN
412       -- Call all the procedures related to Before Insert.
413       IF ( get_pk_for_validation (
414              new_references.assessment_type,
415              new_references.grading_schema_cd,
416              new_references.gs_version_number,
417              new_references.unit_cd,
418              new_references.version_number
419            )
420          ) THEN
421         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
422         igs_ge_msg_stack.add;
423         app_exception.raise_exception;
424       END IF;
425     ELSIF (p_action = 'VALIDATE_DELETE') THEN
426       check_child_existence;
427     END IF;
428 
429   END before_dml;
430 
431 
435     x_version_number                    IN     NUMBER,
432   PROCEDURE insert_row (
433     x_rowid                             IN OUT NOCOPY VARCHAR2,
434     x_unit_cd                           IN     VARCHAR2,
436     x_assessment_type                   IN     VARCHAR2,
437     x_grading_schema_cd                 IN     VARCHAR2,
438     x_gs_version_number                 IN     NUMBER,
439     x_default_ind                       IN     VARCHAR2,
440     x_closed_ind                        IN     VARCHAR2,
441     x_mode                              IN     VARCHAR2 DEFAULT 'R'
442   ) AS
443   /*
444   ||  Created By : [email protected]
445   ||  Created On : 27-DEC-2001
446   ||  Purpose : Handles the INSERT DML logic for the table.
447   ||  Known limitations, enhancements or remarks :
448   ||  Change History :
449   ||  Who             When            What
450   ||  (reverse chronological order - newest change first)
451   */
452     CURSOR c IS
453       SELECT   rowid
454       FROM     igs_as_appr_grd_sch
455       WHERE    assessment_type                   = x_assessment_type
456       AND      grading_schema_cd                 = x_grading_schema_cd
457       AND      gs_version_number                 = x_gs_version_number
458       AND      unit_cd                           = x_unit_cd
459       AND      version_number                    = x_version_number;
460 
461     x_last_update_date           DATE;
462     x_last_updated_by            NUMBER;
463     x_last_update_login          NUMBER;
464 
465   BEGIN
466 
467     x_last_update_date := SYSDATE;
468     IF (x_mode = 'I') THEN
469       x_last_updated_by := 1;
470       x_last_update_login := 0;
471     ELSIF (x_mode = 'R') THEN
472       x_last_updated_by := fnd_global.user_id;
473       IF (x_last_updated_by IS NULL) THEN
474         x_last_updated_by := -1;
475       END IF;
476       x_last_update_login := fnd_global.login_id;
477       IF (x_last_update_login IS NULL) THEN
478         x_last_update_login := -1;
479       END IF;
480     ELSE
481       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
482       igs_ge_msg_stack.add;
483       app_exception.raise_exception;
484     END IF;
485 
486     before_dml(
487       p_action                            => 'INSERT',
488       x_rowid                             => x_rowid,
489       x_unit_cd                           => x_unit_cd,
490       x_version_number                    => x_version_number,
491       x_assessment_type                   => x_assessment_type,
492       x_grading_schema_cd                 => x_grading_schema_cd,
493       x_gs_version_number                 => x_gs_version_number,
494       x_default_ind                       => x_default_ind,
495       x_closed_ind                        => x_closed_ind,
496       x_creation_date                     => x_last_update_date,
497       x_created_by                        => x_last_updated_by,
498       x_last_update_date                  => x_last_update_date,
499       x_last_updated_by                   => x_last_updated_by,
500       x_last_update_login                 => x_last_update_login
501     );
502 
503     INSERT INTO igs_as_appr_grd_sch (
504       unit_cd,
505       version_number,
506       assessment_type,
507       grading_schema_cd,
508       gs_version_number,
509       default_ind,
510       closed_ind,
511       creation_date,
512       created_by,
513       last_update_date,
514       last_updated_by,
515       last_update_login
516     ) VALUES (
517       new_references.unit_cd,
518       new_references.version_number,
519       new_references.assessment_type,
520       new_references.grading_schema_cd,
521       new_references.gs_version_number,
522       new_references.default_ind,
523       new_references.closed_ind,
524       x_last_update_date,
525       x_last_updated_by,
526       x_last_update_date,
527       x_last_updated_by,
528       x_last_update_login
529     );
530 
531     OPEN c;
532     FETCH c INTO x_rowid;
533     IF (c%NOTFOUND) THEN
534       CLOSE c;
535       RAISE NO_DATA_FOUND;
536     END IF;
537     CLOSE c;
538 
539   END insert_row;
540 
541 
542   PROCEDURE lock_row (
543     x_rowid                             IN     VARCHAR2,
544     x_unit_cd                           IN     VARCHAR2,
545     x_version_number                    IN     NUMBER,
546     x_assessment_type                   IN     VARCHAR2,
547     x_grading_schema_cd                 IN     VARCHAR2,
548     x_gs_version_number                 IN     NUMBER,
549     x_default_ind                       IN     VARCHAR2,
550     x_closed_ind                        IN     VARCHAR2
551   ) AS
552   /*
553   ||  Created By : [email protected]
554   ||  Created On : 27-DEC-2001
555   ||  Purpose : Handles the LOCK mechanism for the table.
556   ||  Known limitations, enhancements or remarks :
557   ||  Change History :
558   ||  Who             When            What
559   ||  (reverse chronological order - newest change first)
560   */
561     CURSOR c1 IS
562       SELECT
563         default_ind,
564         closed_ind
565       FROM  igs_as_appr_grd_sch
566       WHERE rowid = x_rowid
567       FOR UPDATE NOWAIT;
568 
569     tlinfo c1%ROWTYPE;
570 
571   BEGIN
572 
573     OPEN c1;
574     FETCH c1 INTO tlinfo;
575     IF (c1%notfound) THEN
576       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
577       igs_ge_msg_stack.add;
578       CLOSE c1;
579       app_exception.raise_exception;
580       RETURN;
581     END IF;
582     CLOSE c1;
583 
584     IF (
585         (tlinfo.default_ind = x_default_ind)
586         AND (tlinfo.closed_ind = x_closed_ind)
587        ) THEN
588       NULL;
589     ELSE
590       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
591       igs_ge_msg_stack.add;
592       app_exception.raise_exception;
593     END IF;
594 
595     RETURN;
596 
597   END lock_row;
598 
599 
600   PROCEDURE update_row (
601     x_rowid                             IN     VARCHAR2,
602     x_unit_cd                           IN     VARCHAR2,
603     x_version_number                    IN     NUMBER,
604     x_assessment_type                   IN     VARCHAR2,
605     x_grading_schema_cd                 IN     VARCHAR2,
606     x_gs_version_number                 IN     NUMBER,
607     x_default_ind                       IN     VARCHAR2,
608     x_closed_ind                        IN     VARCHAR2,
609     x_mode                              IN     VARCHAR2 DEFAULT 'R'
610   ) AS
611   /*
612   ||  Created By : [email protected]
613   ||  Created On : 27-DEC-2001
614   ||  Purpose : Handles the UPDATE DML logic for the table.
615   ||  Known limitations, enhancements or remarks :
616   ||  Change History :
617   ||  Who             When            What
618   ||  (reverse chronological order - newest change first)
619   */
620     x_last_update_date           DATE ;
621     x_last_updated_by            NUMBER;
622     x_last_update_login          NUMBER;
623 
624   BEGIN
625 
626     x_last_update_date := SYSDATE;
627     IF (X_MODE = 'I') THEN
628       x_last_updated_by := 1;
629       x_last_update_login := 0;
630     ELSIF (x_mode = 'R') THEN
631       x_last_updated_by := fnd_global.user_id;
632       IF x_last_updated_by IS NULL THEN
633         x_last_updated_by := -1;
634       END IF;
635       x_last_update_login := fnd_global.login_id;
636       IF (x_last_update_login IS NULL) THEN
637         x_last_update_login := -1;
638       END IF;
639     ELSE
640       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
641       igs_ge_msg_stack.add;
642       app_exception.raise_exception;
643     END IF;
644 
645     before_dml(
646       p_action                            => 'UPDATE',
647       x_rowid                             => x_rowid,
648       x_unit_cd                           => x_unit_cd,
649       x_version_number                    => x_version_number,
650       x_assessment_type                   => x_assessment_type,
651       x_grading_schema_cd                 => x_grading_schema_cd,
652       x_gs_version_number                 => x_gs_version_number,
653       x_default_ind                       => x_default_ind,
654       x_closed_ind                        => x_closed_ind,
655       x_creation_date                     => x_last_update_date,
656       x_created_by                        => x_last_updated_by,
657       x_last_update_date                  => x_last_update_date,
658       x_last_updated_by                   => x_last_updated_by,
659       x_last_update_login                 => x_last_update_login
660     );
661 
662     UPDATE igs_as_appr_grd_sch
663       SET
664         default_ind                       = new_references.default_ind,
665         closed_ind                        = new_references.closed_ind,
666         last_update_date                  = x_last_update_date,
667         last_updated_by                   = x_last_updated_by,
668         last_update_login                 = x_last_update_login
669       WHERE rowid = x_rowid;
670 
671     IF (SQL%NOTFOUND) THEN
672       RAISE NO_DATA_FOUND;
673     END IF;
674 
675   END update_row;
676 
677 
678   PROCEDURE add_row (
679     x_rowid                             IN OUT NOCOPY VARCHAR2,
680     x_unit_cd                           IN     VARCHAR2,
681     x_version_number                    IN     NUMBER,
682     x_assessment_type                   IN     VARCHAR2,
683     x_grading_schema_cd                 IN     VARCHAR2,
684     x_gs_version_number                 IN     NUMBER,
685     x_default_ind                       IN     VARCHAR2,
686     x_closed_ind                        IN     VARCHAR2,
687     x_mode                              IN     VARCHAR2 DEFAULT 'R'
688   ) AS
689   /*
690   ||  Created By : [email protected]
691   ||  Created On : 27-DEC-2001
692   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
693   ||  Known limitations, enhancements or remarks :
694   ||  Change History :
695   ||  Who             When            What
696   ||  (reverse chronological order - newest change first)
697   */
698     CURSOR c1 IS
699       SELECT   rowid
700       FROM     igs_as_appr_grd_sch
701       WHERE    assessment_type                   = x_assessment_type
705       AND      version_number                    = x_version_number;
702       AND      grading_schema_cd                 = x_grading_schema_cd
703       AND      gs_version_number                 = x_gs_version_number
704       AND      unit_cd                           = x_unit_cd
706 
707   BEGIN
708 
709     OPEN c1;
710     FETCH c1 INTO x_rowid;
711     IF (c1%NOTFOUND) THEN
712       CLOSE c1;
713 
714       insert_row (
715         x_rowid,
716         x_unit_cd,
717         x_version_number,
718         x_assessment_type,
719         x_grading_schema_cd,
720         x_gs_version_number,
721         x_default_ind,
722         x_closed_ind,
723         x_mode
724       );
725       RETURN;
726     END IF;
727     CLOSE c1;
728 
729     update_row (
730       x_rowid,
731       x_unit_cd,
732       x_version_number,
733       x_assessment_type,
734       x_grading_schema_cd,
735       x_gs_version_number,
736       x_default_ind,
737       x_closed_ind,
738       x_mode
739     );
740 
741   END add_row;
742 
743 
744   PROCEDURE delete_row (
745     x_rowid IN VARCHAR2
746   ) AS
747   /*
748   ||  Created By : [email protected]
749   ||  Created On : 27-DEC-2001
750   ||  Purpose : Handles the DELETE DML logic for the table.
751   ||  Known limitations, enhancements or remarks :
752   ||  Change History :
753   ||  Who             When            What
754   ||  (reverse chronological order - newest change first)
755   */
756   BEGIN
757 
758     before_dml (
759       p_action => 'DELETE',
760       x_rowid => x_rowid
761     );
762 
763     DELETE FROM igs_as_appr_grd_sch
764     WHERE rowid = x_rowid;
765 
766     IF (SQL%NOTFOUND) THEN
767       RAISE NO_DATA_FOUND;
768     END IF;
769 
770   END delete_row;
771 
772 
773 END igs_as_appr_grd_sch_pkg;