DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_AWD_OWN_PKG

Source


1 package body IGS_PS_AWD_OWN_PKG AS
2   /* $Header: IGSPI07B.pls 115.9 2003/06/10 08:14:30 smvk ship $ */
3 
4 
5   l_rowid VARCHAR2(25);
6   old_references IGS_PS_AWD_OWN%RowType;
7   new_references IGS_PS_AWD_OWN%RowType;
8 
9   PROCEDURE Set_Column_Values (
10     p_action IN VARCHAR2,
11     x_rowid IN VARCHAR2 DEFAULT NULL,
12     x_course_cd IN VARCHAR2 DEFAULT NULL,
13     x_version_number IN NUMBER DEFAULT NULL,
14     x_award_cd IN VARCHAR2 DEFAULT NULL,
15     x_org_unit_cd IN VARCHAR2 DEFAULT NULL,
16     x_ou_start_dt IN DATE DEFAULT NULL,
17     x_percentage IN NUMBER 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     CURSOR cur_old_ref_values IS
26       SELECT   *
27       FROM     IGS_PS_AWD_OWN
28       WHERE    rowid = x_rowid;
29 
30   BEGIN
31 
32     l_rowid := x_rowid;
33 
34     -- Code for setting the Old and New Reference Values.
35     -- Populate Old Values.
36     Open cur_old_ref_values;
37     Fetch cur_old_ref_values INTO old_references;
38     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
39       Close cur_old_ref_values;
40       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
41       IGS_GE_MSG_STACK.ADD;
42       App_Exception.Raise_Exception;
43       Return;
44     END IF;
45     Close cur_old_ref_values;
46 
47     -- Populate New Values.
48     new_references.course_cd := x_course_cd;
49     new_references.version_number := x_version_number;
50     new_references.award_cd := x_award_cd;
51     new_references.org_unit_cd := x_org_unit_cd;
52     new_references.ou_start_dt := x_ou_start_dt;
53     new_references.percentage := x_percentage;
54     IF (p_action = 'UPDATE') THEN
55       new_references.creation_date := old_references.creation_date;
56       new_references.created_by := old_references.created_by;
57     ELSE
58       new_references.creation_date := x_creation_date;
59       new_references.created_by := x_created_by;
60     END IF;
61     new_references.last_update_date := x_last_update_date;
62     new_references.last_updated_by := x_last_updated_by;
63     new_references.last_update_login := x_last_update_login;
64 
65   END Set_Column_Values;
66 
67   -- Trigger description :-
68   -- "OSS_TST".TRG_CAO_BR_IUD
69   -- BEFORE  INSERT  OR UPDATE  OR DELETE  ON IGS_PS_AWD_OWN
70   -- REFERENCING
71   --  NEW AS NEW
72   --  OLD AS OLD
73   -- FOR EACH ROW
74 
75   PROCEDURE BeforeRowInsertUpdateDelete1(
76     p_inserting IN BOOLEAN DEFAULT FALSE,
77     p_updating IN BOOLEAN DEFAULT FALSE,
78     p_deleting IN BOOLEAN DEFAULT FALSE
79     ) AS
80 	v_message_name		varchar2(30);
81 	v_course_cd		IGS_PS_AWD_OWN.course_cd%TYPE;
82 	v_version_number		IGS_PS_AWD_OWN.version_number%TYPE;
83   BEGIN
84 
85 	-- Set variables.
86 	IF p_deleting THEN
87 		v_course_cd := old_references.course_cd;
88 		v_version_number := old_references.version_number;
89 	ELSE -- p_inserting or p_updating
90 		v_course_cd := new_references.course_cd;
91 		v_version_number := new_references.version_number;
92 	END IF;
93 	-- Validate the insert/update/delete.
94 	IF  IGS_PS_VAL_CRS.crsp_val_iud_crv_dtl (
95 			v_course_cd,
96 			v_version_number,
97 			v_message_name) = FALSE THEN
98 		Fnd_Message.Set_Name('IGS',v_message_name);
99 		IGS_GE_MSG_STACK.ADD;
100 		App_Exception.Raise_Exception;
101 	END IF;
102 	-- Validate the org IGS_PS_UNIT.  Org IGS_PS_UNIT is not updateable.
103 	IF p_inserting THEN
104 	-- As part of the bug# 1956374 changed to the below call from IGS_PS_VAL_CAO.crsp_val_ou_sys_sts
105 		IF IGS_PS_VAL_CRV.crsp_val_ou_sys_sts (
106 				new_references.org_unit_cd,
107 				new_references.ou_start_dt,
108 				v_message_name) = FALSE THEN
109 			Fnd_Message.Set_Name('IGS',v_message_name);
110 			IGS_GE_MSG_STACK.ADD;
111 			App_Exception.Raise_Exception;
112 		END IF;
113 	END IF;
114 
115 
116   END BeforeRowInsertUpdateDelete1;
117 
118   PROCEDURE before_insert_update(p_inserting IN BOOLEAN DEFAULT FALSE,
119                                 p_updating  IN BOOLEAN DEFAULT FALSE ) AS
120      CURSOR c_closed_ind (cp_c_award_cd IN IGS_PS_AWARD.AWARD_CD%TYPE,
121                           cp_c_course_cd IN IGS_PS_AWARD.COURSE_CD%TYPE,
122                           cp_n_version_num IN IGS_PS_AWARD.VERSION_NUMBER%TYPE) IS
123        SELECT CLOSED_IND
124        FROM IGS_PS_AWARD
125        WHERE AWARD_CD = cp_c_award_cd
126        AND   COURSE_CD = cp_c_course_cd
127        AND   VERSION_NUMBER = cp_n_version_num;
128        l_c_closed_ind VARCHAR2(1);
129   BEGIN
130      IF p_inserting OR ( p_updating AND new_references.award_cd <> old_references.award_cd ) THEN
131         OPEN c_closed_ind(new_references.award_cd, new_references.course_cd, new_references.version_number);
132         FETCH c_closed_ind INTO l_c_closed_ind;
133         CLOSE c_closed_ind;
134         IF l_c_closed_ind = 'Y' THEN
135            fnd_message.set_name('IGS','IGS_PS_AWD_CD_CLOSED');
136            igs_ge_msg_stack.add;
137            app_exception.raise_exception;
138         END IF;
139      END IF;
140   END before_insert_update;
141 
142  PROCEDURE Check_Constraints (
143  Column_Name	IN VARCHAR2	DEFAULT NULL,
144  Column_Value 	IN VARCHAR2	DEFAULT NULL
145  )
146  AS
147  BEGIN
148 
149 	IF column_name is null then
150 	    NULL;
151 	ELSIF upper(Column_name) = 'PERCENTAGE' then
152 	    new_references.percentage := igs_ge_number.to_num(column_value);
153 	ELSIF upper(Column_name) = 'AWARD_CD' then
154 	    new_references.award_cd := column_value;
155 	ELSIF upper(Column_name) = 'COURSE_CD' then
156 	    new_references.course_cd := column_value;
157         END IF;
158 
159     IF upper(column_name) = 'PERCENTAGE' OR
160     column_name is null Then
161 	   IF ( new_references.percentage < 0 OR new_references.percentage > 100 ) Then
162       	 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
163       	 IGS_GE_MSG_STACK.ADD;
164              App_Exception.Raise_Exception;
165           END IF;
166     END IF;
167 
168     IF upper(column_name) = 'AWARD_CD' OR
169     column_name is null Then
170 	   IF ( new_references.award_cd <> UPPER(new_references.award_cd) ) Then
171       	 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
172       	 IGS_GE_MSG_STACK.ADD;
173              App_Exception.Raise_Exception;
174           END IF;
175     END IF;
176 
177     IF upper(column_name) = 'COURSE_CD' OR
178     column_name is null Then
179 	   IF ( new_references.course_cd <> UPPER(new_references.course_cd) ) Then
180       	 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
181       	 IGS_GE_MSG_STACK.ADD;
182              App_Exception.Raise_Exception;
183           END IF;
184     END IF;
185 
186   END Check_Constraints;
187 
188   PROCEDURE Check_Parent_Existance AS
189   BEGIN
190 
191     IF (((old_references.course_cd = new_references.course_cd) AND
192          (old_references.version_number = new_references.version_number) AND
193          (old_references.award_cd = new_references.award_cd)) OR
194         ((new_references.course_cd IS NULL) OR
195          (new_references.version_number IS NULL) OR
196          (new_references.award_cd IS NULL))) THEN
197       NULL;
198     ELSE
199       IF NOT IGS_PS_AWARD_PKG.Get_PK_For_Validation (
200         new_references.course_cd,
201         new_references.version_number,
202         new_references.award_cd
203         ) THEN
204 	        Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
205 	        IGS_GE_MSG_STACK.ADD;
206 	        App_Exception.Raise_Exception;
207 	END IF;
208     END IF;
209 
210     IF (((old_references.org_unit_cd = new_references.org_unit_cd) AND
211          (old_references.ou_start_dt = new_references.ou_start_dt)) OR
212         ((new_references.org_unit_cd IS NULL) OR
213          (new_references.ou_start_dt IS NULL))) THEN
214       NULL;
215     ELSE
216       IF NOT IGS_OR_UNIT_PKG.Get_PK_For_Validation (
217         new_references.org_unit_cd,
218         new_references.ou_start_dt
219         ) THEN
220 	        Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
221 	        IGS_GE_MSG_STACK.ADD;
222 	        App_Exception.Raise_Exception;
223 	END IF;
224     END IF;
225 
226   END Check_Parent_Existance;
227 
228   FUNCTION Get_PK_For_Validation (
229     x_course_cd IN VARCHAR2,
230     x_version_number IN NUMBER,
231     x_award_cd IN VARCHAR2,
232     x_org_unit_cd IN VARCHAR2,
233     x_ou_start_dt IN DATE
234     )
235   RETURN BOOLEAN AS
236 
237     CURSOR cur_rowid IS
238       SELECT   rowid
239       FROM     IGS_PS_AWD_OWN
240       WHERE    course_cd = x_course_cd
241       AND      version_number = x_version_number
242       AND      award_cd = x_award_cd
243       AND      org_unit_cd = x_org_unit_cd
244       AND      ou_start_dt = x_ou_start_dt
245       FOR UPDATE NOWAIT;
246 
247     lv_rowid cur_rowid%RowType;
248 
249   BEGIN
250 
251     Open cur_rowid;
252     Fetch cur_rowid INTO lv_rowid;
253     IF (cur_rowid%FOUND) THEN
254       Close cur_rowid;
255       Return (TRUE);
256     ELSE
257 	Close cur_rowid;
258       Return (FALSE);
259     END IF;
260 
261   END Get_PK_For_Validation;
262 
263   PROCEDURE GET_FK_IGS_OR_UNIT (
264     x_org_unit_cd IN VARCHAR2,
265     x_start_dt IN VARCHAR2
266     ) AS
267 
268     CURSOR cur_rowid IS
269       SELECT   rowid
270       FROM     IGS_PS_AWD_OWN
271       WHERE    org_unit_cd = x_org_unit_cd
272       AND      ou_start_dt = x_start_dt ;
273 
274     lv_rowid cur_rowid%RowType;
275 
276   BEGIN
277 
278     Open cur_rowid;
279     Fetch cur_rowid INTO lv_rowid;
280     IF (cur_rowid%FOUND) THEN
281       Close cur_rowid;
282       Fnd_Message.Set_Name ('IGS', 'IGS_PS_CAO_OU_FK');
283       IGS_GE_MSG_STACK.ADD;
284       App_Exception.Raise_Exception;
285       Return;
286     END IF;
287     Close cur_rowid;
288 
289   END GET_FK_IGS_OR_UNIT;
290 
291   PROCEDURE Before_DML (
292     p_action IN VARCHAR2,
293     x_rowid IN VARCHAR2 DEFAULT NULL,
294     x_course_cd IN VARCHAR2 DEFAULT NULL,
295     x_version_number IN NUMBER DEFAULT NULL,
296     x_award_cd IN VARCHAR2 DEFAULT NULL,
297     x_org_unit_cd IN VARCHAR2 DEFAULT NULL,
298     x_ou_start_dt IN DATE DEFAULT NULL,
299     x_percentage IN NUMBER DEFAULT NULL,
300     x_creation_date IN DATE DEFAULT NULL,
301     x_created_by IN NUMBER DEFAULT NULL,
302     x_last_update_date IN DATE DEFAULT NULL,
303     x_last_updated_by IN NUMBER DEFAULT NULL,
304     x_last_update_login IN NUMBER DEFAULT NULL
305   ) AS
306   BEGIN
307 
308     Set_Column_Values (
309       p_action,
310       x_rowid,
311       x_course_cd,
312       x_version_number,
313       x_award_cd,
314       x_org_unit_cd,
315       x_ou_start_dt,
316       x_percentage,
317       x_creation_date,
318       x_created_by,
319       x_last_update_date,
320       x_last_updated_by,
321       x_last_update_login
322     );
323 
324     IF (p_action = 'INSERT') THEN
325       -- Call all the procedures related to Before Insert.
326       BeforeRowInsertUpdateDelete1 ( p_inserting => TRUE );
327       before_insert_update( p_inserting => TRUE , p_updating => FALSE);
328 	IF Get_PK_For_Validation (
329       new_references.course_cd,
330       new_references.version_number,
331       new_references.award_cd ,
332       new_references.org_unit_cd ,
333       new_references.ou_start_dt) THEN
334 	   Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
335 	   IGS_GE_MSG_STACK.ADD;
336          App_Exception.Raise_Exception;
337 	END IF;
338       Check_Constraints;
339       Check_Parent_Existance;
340     ELSIF (p_action = 'UPDATE') THEN
341       -- Call all the procedures related to Before Update.
342       BeforeRowInsertUpdateDelete1 ( p_updating => TRUE );
343       before_insert_update(p_inserting => FALSE, p_updating => TRUE);
344       Check_Constraints;
345       Check_Parent_Existance;
346     ELSIF (p_action = 'DELETE') THEN
347       -- Call all the procedures related to Before Delete.
348       BeforeRowInsertUpdateDelete1 ( p_deleting => TRUE );
349     ELSIF (p_action = 'VALIDATE_INSERT') THEN
350 	IF  Get_PK_For_Validation (
351       new_references.course_cd,
352       new_references.version_number,
353       new_references.award_cd ,
354       new_references.org_unit_cd ,
355       new_references.ou_start_dt) THEN
356 	    Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
357 	    IGS_GE_MSG_STACK.ADD;
358 	    App_Exception.Raise_Exception;
359 	END IF;
360 	Check_Constraints;
361     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
362 	Check_Constraints;
363     END IF;
364 
365   END Before_DML;
366 
367   PROCEDURE After_DML (
368     p_action IN VARCHAR2,
369     x_rowid IN VARCHAR2
370   ) AS
371   BEGIN
372 
373     l_rowid := x_rowid;
374 
375 
376   END After_DML;
377 
378 procedure INSERT_ROW (
379   X_ROWID in out NOCOPY VARCHAR2,
380   X_COURSE_CD in VARCHAR2,
381   X_ORG_UNIT_CD in VARCHAR2,
382   X_OU_START_DT in DATE,
383   X_AWARD_CD in VARCHAR2,
384   X_VERSION_NUMBER in NUMBER,
385   X_PERCENTAGE in NUMBER,
386   X_MODE in VARCHAR2 default 'R'
387   ) AS
388     cursor C is select ROWID from IGS_PS_AWD_OWN
389       where COURSE_CD = X_COURSE_CD
390       and ORG_UNIT_CD = X_ORG_UNIT_CD
391       and OU_START_DT = X_OU_START_DT
392       and AWARD_CD = X_AWARD_CD
393       and VERSION_NUMBER = X_VERSION_NUMBER;
394     X_LAST_UPDATE_DATE DATE;
395     X_LAST_UPDATED_BY NUMBER;
396     X_LAST_UPDATE_LOGIN NUMBER;
397 begin
398   X_LAST_UPDATE_DATE := SYSDATE;
399   if(X_MODE = 'I') then
400     X_LAST_UPDATED_BY := 1;
401     X_LAST_UPDATE_LOGIN := 0;
402   elsif (X_MODE = 'R') then
403     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
404     if X_LAST_UPDATED_BY is NULL then
405       X_LAST_UPDATED_BY := -1;
406     end if;
407     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
408     if X_LAST_UPDATE_LOGIN is NULL then
409       X_LAST_UPDATE_LOGIN := -1;
410     end if;
411   else
412     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
413     IGS_GE_MSG_STACK.ADD;
414     app_exception.raise_exception;
415   end if;
416 
417 Before_DML (
418     p_action => 'INSERT',
419     x_rowid => X_ROWID,
420     x_course_cd => X_COURSE_CD,
421     x_version_number => X_VERSION_NUMBER,
422     x_award_cd => X_AWARD_CD,
423     x_org_unit_cd => X_ORG_UNIT_CD,
424     x_ou_start_dt => X_OU_START_DT,
425     x_percentage => X_PERCENTAGE ,
426     x_creation_date => X_LAST_UPDATE_DATE  ,
427     x_created_by => X_LAST_UPDATED_BY ,
428     x_last_update_date => X_LAST_UPDATE_DATE  ,
429     x_last_updated_by => X_LAST_UPDATED_BY ,
430     x_last_update_login => X_LAST_UPDATE_LOGIN
431  );
432 
433   insert into IGS_PS_AWD_OWN (
434     COURSE_CD,
435     VERSION_NUMBER,
436     AWARD_CD,
437     ORG_UNIT_CD,
438     OU_START_DT,
439     PERCENTAGE,
440     CREATION_DATE,
441     CREATED_BY,
442     LAST_UPDATE_DATE,
443     LAST_UPDATED_BY,
444     LAST_UPDATE_LOGIN
445   ) values (
446     NEW_REFERENCES.COURSE_CD,
447     NEW_REFERENCES.VERSION_NUMBER,
448     NEW_REFERENCES.AWARD_CD,
449     NEW_REFERENCES.ORG_UNIT_CD,
450     NEW_REFERENCES.OU_START_DT,
451     NEW_REFERENCES.PERCENTAGE,
452     X_LAST_UPDATE_DATE,
453     X_LAST_UPDATED_BY,
454     X_LAST_UPDATE_DATE,
455     X_LAST_UPDATED_BY,
456     X_LAST_UPDATE_LOGIN
457   );
458 
459   open c;
460   fetch c into X_ROWID;
461   if (c%notfound) then
462     close c;
463     raise no_data_found;
464   end if;
465   close c;
466 
467 After_DML (
468 	p_action => 'INSERT',
469 	x_rowid => X_ROWID
470 );
471 
472 end INSERT_ROW;
473 
474 procedure LOCK_ROW (
475   X_ROWID IN VARCHAR2,
476   X_COURSE_CD in VARCHAR2,
477   X_ORG_UNIT_CD in VARCHAR2,
478   X_OU_START_DT in DATE,
479   X_AWARD_CD in VARCHAR2,
480   X_VERSION_NUMBER in NUMBER,
481   X_PERCENTAGE in NUMBER
482 ) AS
483   cursor c1 is select
484       PERCENTAGE
485     from IGS_PS_AWD_OWN
486     where ROWID = X_ROWID
487     for update nowait;
488   tlinfo c1%rowtype;
489 
490 begin
491   open c1;
492   fetch c1 into tlinfo;
493   if (c1%notfound) then
494     close c1;
495     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
496     IGS_GE_MSG_STACK.ADD;
497     app_exception.raise_exception;
498     return;
499   end if;
500   close c1;
501 
502   if ( (tlinfo.PERCENTAGE = X_PERCENTAGE)
503   ) then
504     null;
505   else
506     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
507     IGS_GE_MSG_STACK.ADD;
508     app_exception.raise_exception;
509   end if;
510   return;
511 end LOCK_ROW;
512 
513 procedure UPDATE_ROW (
514   X_ROWID IN VARCHAR2,
515   X_COURSE_CD in VARCHAR2,
516   X_ORG_UNIT_CD in VARCHAR2,
517   X_OU_START_DT in DATE,
518   X_AWARD_CD in VARCHAR2,
519   X_VERSION_NUMBER in NUMBER,
520   X_PERCENTAGE in NUMBER,
521   X_MODE in VARCHAR2 default 'R'
522   ) AS
523     X_LAST_UPDATE_DATE DATE;
524     X_LAST_UPDATED_BY NUMBER;
525     X_LAST_UPDATE_LOGIN NUMBER;
526 begin
527   X_LAST_UPDATE_DATE := SYSDATE;
528   if(X_MODE = 'I') then
529     X_LAST_UPDATED_BY := 1;
530     X_LAST_UPDATE_LOGIN := 0;
531   elsif (X_MODE = 'R') then
532     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
533     if X_LAST_UPDATED_BY is NULL then
534       X_LAST_UPDATED_BY := -1;
535     end if;
536     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
537     if X_LAST_UPDATE_LOGIN is NULL then
538       X_LAST_UPDATE_LOGIN := -1;
539     end if;
540   else
541     FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
542     IGS_GE_MSG_STACK.ADD;
543     app_exception.raise_exception;
544   end if;
545 
546 Before_DML (
547     p_action => 'UPDATE',
548     x_rowid => X_ROWID,
549     x_course_cd => X_COURSE_CD,
550     x_version_number => X_VERSION_NUMBER,
551     x_award_cd => X_AWARD_CD,
552     x_org_unit_cd => X_ORG_UNIT_CD,
553     x_ou_start_dt => X_OU_START_DT,
554     x_percentage => X_PERCENTAGE ,
555     x_creation_date => X_LAST_UPDATE_DATE  ,
556     x_created_by => X_LAST_UPDATED_BY ,
557     x_last_update_date => X_LAST_UPDATE_DATE  ,
558     x_last_updated_by => X_LAST_UPDATED_BY ,
559     x_last_update_login => X_LAST_UPDATE_LOGIN
560  );
561 
562   update IGS_PS_AWD_OWN set
563     PERCENTAGE = NEW_REFERENCES.PERCENTAGE,
564     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
565     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
566     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
567   where ROWID = X_ROWID
568   ;
569   if (sql%notfound) then
570     raise no_data_found;
571   end if;
572 
573 After_DML (
574 	p_action => 'UPDATE',
575 	x_rowid => X_ROWID
576 );
577 
578 end UPDATE_ROW;
579 
580 procedure ADD_ROW (
581   X_ROWID in out NOCOPY VARCHAR2,
582   X_COURSE_CD in VARCHAR2,
583   X_ORG_UNIT_CD in VARCHAR2,
584   X_OU_START_DT in DATE,
585   X_AWARD_CD in VARCHAR2,
586   X_VERSION_NUMBER in NUMBER,
587   X_PERCENTAGE in NUMBER,
588   X_MODE in VARCHAR2 default 'R'
589   ) AS
590   cursor c1 is select rowid from IGS_PS_AWD_OWN
591      where COURSE_CD = X_COURSE_CD
592      and ORG_UNIT_CD = X_ORG_UNIT_CD
593      and OU_START_DT = X_OU_START_DT
594      and AWARD_CD = X_AWARD_CD
595      and VERSION_NUMBER = X_VERSION_NUMBER
596   ;
597 
598 begin
599   open c1;
600   fetch c1 into X_ROWID;
601   if (c1%notfound) then
602     close c1;
603     INSERT_ROW (
604      X_ROWID,
605      X_COURSE_CD,
606      X_ORG_UNIT_CD,
607      X_OU_START_DT,
608      X_AWARD_CD,
609      X_VERSION_NUMBER,
610      X_PERCENTAGE,
611      X_MODE);
612     return;
613   end if;
614   close c1;
615   UPDATE_ROW (
616    X_ROWID,
617    X_COURSE_CD,
618    X_ORG_UNIT_CD,
619    X_OU_START_DT,
620    X_AWARD_CD,
621    X_VERSION_NUMBER,
622    X_PERCENTAGE,
623    X_MODE);
624 end ADD_ROW;
625 
626 procedure DELETE_ROW (
627   X_ROWID in VARCHAR2
628 ) AS
629 begin
630 
631 Before_DML (
632 	p_action => 'DELETE',
633 	x_rowid => X_ROWID
634 );
635 
636   delete from IGS_PS_AWD_OWN
637   where ROWID = X_ROWID;
638   if (sql%notfound) then
639     raise no_data_found;
640   end if;
641 
642 After_DML (
643 	p_action => 'DELETE',
644 	x_rowid => X_ROWID
645 );
646 
647 end DELETE_ROW;
648 
649 end IGS_PS_AWD_OWN_PKG;