DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PE_PRSID_GRP_SEC_PKG

Source


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