DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_EN_UNIT_SET_RULE_PKG

Source


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