DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_UNITREQREF_CD_PKG

Source


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