DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_HE_EX_RN_DAT_LN_PKG

Source


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