DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_EN_MERGE_ID_ROWS_PKG

Source


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