DBA Data[Home] [Help]

PACKAGE BODY: APPS.OTA_CMB_UPD

Source


1 Package Body ota_cmb_upd as
2 /* $Header: otcmbrhi.pkb 120.5 2005/08/19 17:58 gdhutton noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33) := '  ota_cmb_upd.';  -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |------------------------------< update_dml >------------------------------|
12 -- ----------------------------------------------------------------------------
13 -- {Start Of Comments}
14 --
15 -- Description:
16 --   This procedure controls the actual dml update logic. The processing of
17 --   this procedure is:
18 --   1) Increment the object_version_number by 1 if the object_version_number
19 --      is defined as an attribute for this entity.
20 --   2) To set and unset the g_api_dml status as required (as we are about to
21 --      perform dml).
22 --   3) To update the specified row in the schema using the primary key in
23 --      the predicates.
24 --   4) To trap any constraint violations that may have occurred.
25 --   5) To raise any other errors.
26 --
27 -- Prerequisites:
28 --   This is an internal private procedure which must be called from the upd
29 --   procedure.
30 --
31 -- In Parameters:
32 --   A Pl/Sql record structre.
33 --
34 -- Post Success:
35 --   The specified row will be updated in the schema.
36 --
37 -- Post Failure:
38 --   On the update dml failure it is important to note that we always reset the
39 --   g_api_dml status to false.
40 --   If a check, unique or parent integrity constraint violation is raised the
41 --   constraint_error procedure will be called.
42 --   If any other error is reported, the error will be raised after the
43 --   g_api_dml status is reset.
44 --
45 -- Developer Implementation Notes:
46 --   The update 'set' attribute list should be modified if any of your
47 --   attributes are not updateable.
48 --
49 -- Access Status:
50 --   Internal Row Handler Use Only.
51 --
52 -- {End Of Comments}
53 -- ----------------------------------------------------------------------------
54 Procedure update_dml
55   (p_rec in out nocopy ota_cmb_shd.g_rec_type
56   ) is
57 --
58   l_proc  varchar2(72) := g_package||'update_dml';
59 --
60 Begin
61   hr_utility.set_location('Entering:'||l_proc, 5);
62   --
63   -- Increment the object version
64   p_rec.object_version_number := p_rec.object_version_number + 1;
65   --
66   --
67   --
68   -- Update the ota_certification_members Row
69   --
70   update ota_certification_members
71     set
72      certification_member_id         = p_rec.certification_member_id
73     ,certification_id                = p_rec.certification_id
74     ,object_id                       = p_rec.object_id
75     ,object_type                     = p_rec.object_type
76     ,member_sequence                 = p_rec.member_sequence
77     ,business_group_id               = p_rec.business_group_id
78     ,start_date_active               = p_rec.start_date_active
79     ,end_date_active                 = p_rec.end_date_active
80     ,object_version_number           = p_rec.object_version_number
81     ,attribute_category              = p_rec.attribute_category
82     ,attribute1                      = p_rec.attribute1
83     ,attribute2                      = p_rec.attribute2
84     ,attribute3                      = p_rec.attribute3
85     ,attribute4                      = p_rec.attribute4
86     ,attribute5                      = p_rec.attribute5
87     ,attribute6                      = p_rec.attribute6
88     ,attribute7                      = p_rec.attribute7
89     ,attribute8                      = p_rec.attribute8
90     ,attribute9                      = p_rec.attribute9
91     ,attribute10                     = p_rec.attribute10
92     ,attribute11                     = p_rec.attribute11
93     ,attribute12                     = p_rec.attribute12
94     ,attribute13                     = p_rec.attribute13
95     ,attribute14                     = p_rec.attribute14
96     ,attribute15                     = p_rec.attribute15
97     ,attribute16                     = p_rec.attribute16
98     ,attribute17                     = p_rec.attribute17
99     ,attribute18                     = p_rec.attribute18
100     ,attribute19                     = p_rec.attribute19
101     ,attribute20                     = p_rec.attribute20
102     where certification_member_id = p_rec.certification_member_id;
103   --
104   --
105   --
106   hr_utility.set_location(' Leaving:'||l_proc, 10);
107 --
108 Exception
109   When hr_api.check_integrity_violated Then
110     -- A check constraint has been violated
111     --
112     ota_cmb_shd.constraint_error
113       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
114   When hr_api.parent_integrity_violated Then
115     -- Parent integrity has been violated
116     --
117     ota_cmb_shd.constraint_error
118       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
119   When hr_api.unique_integrity_violated Then
120     -- Unique integrity has been violated
121     --
122     ota_cmb_shd.constraint_error
123       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
124   When Others Then
125     --
126     Raise;
127 End update_dml;
128 --
129 -- ----------------------------------------------------------------------------
130 -- |------------------------------< pre_update >------------------------------|
131 -- ----------------------------------------------------------------------------
132 -- {Start Of Comments}
133 --
134 -- Description:
135 --   This private procedure contains any processing which is required before
136 --   the update dml.
137 --
138 -- Prerequisites:
139 --   This is an internal procedure which is called from the upd procedure.
140 --
141 -- In Parameters:
142 --   A Pl/Sql record structure.
143 --
144 -- Post Success:
145 --   Processing continues.
146 --
147 -- Post Failure:
148 --   If an error has occurred, an error message and exception wil be raised
149 --   but not handled.
150 --
151 -- Developer Implementation Notes:
152 --   Any pre-processing required before the update dml is issued should be
153 --   coded within this procedure. It is important to note that any 3rd party
154 --   maintenance should be reviewed before placing in this procedure.
155 --
156 -- Access Status:
157 --   Internal Row Handler Use Only.
158 --
159 -- {End Of Comments}
160 -- ----------------------------------------------------------------------------
161 Procedure pre_update
162   (p_rec in ota_cmb_shd.g_rec_type
163   ) is
164 --
165   l_proc  varchar2(72) := g_package||'pre_update';
166 --
167 Begin
168   hr_utility.set_location('Entering:'||l_proc, 5);
169   --
170   hr_utility.set_location(' Leaving:'||l_proc, 10);
171 End pre_update;
172 --
173 -- ----------------------------------------------------------------------------
174 -- |-----------------------------< post_update >------------------------------|
175 -- ----------------------------------------------------------------------------
176 -- {Start Of Comments}
177 --
178 -- Description:
179 --   This private procedure contains any processing which is required after
180 --   the update dml.
181 --
182 -- Prerequisites:
183 --   This is an internal procedure which is called from the upd procedure.
184 --
185 -- In Parameters:
186 --   A Pl/Sql record structure.
187 --
188 -- Post Success:
189 --   Processing continues.
190 --
191 -- Post Failure:
192 --   If an error has occurred, an error message and exception will be raised
193 --   but not handled.
194 --
195 -- Developer Implementation Notes:
196 --   Any post-processing required after the update dml is issued should be
197 --   coded within this procedure. It is important to note that any 3rd party
198 --   maintenance should be reviewed before placing in this procedure.
199 --
200 -- Access Status:
201 --   Internal Row Handler Use Only.
202 --
203 -- {End Of Comments}
204 -- ----------------------------------------------------------------------------
205 Procedure post_update
206   (p_effective_date               in date
207   ,p_rec                          in ota_cmb_shd.g_rec_type
208   ) is
209 --
210   l_proc  varchar2(72) := g_package||'post_update';
211 --
212 Begin
213   hr_utility.set_location('Entering:'||l_proc, 5);
214   begin
215     --
216     ota_cmb_rku.after_update
217       (p_effective_date              => p_effective_date
218       ,p_certification_member_id
219       => p_rec.certification_member_id
220       ,p_certification_id
221       => p_rec.certification_id
222       ,p_object_id
223       => p_rec.object_id
224       ,p_object_type
225       => p_rec.object_type
226       ,p_member_sequence
227       => p_rec.member_sequence
228       ,p_business_group_id
229       => p_rec.business_group_id
230       ,p_start_date_active
231       => p_rec.start_date_active
232       ,p_end_date_active
233       => p_rec.end_date_active
234       ,p_object_version_number
235       => p_rec.object_version_number
236       ,p_attribute_category
237       => p_rec.attribute_category
238       ,p_attribute1
239       => p_rec.attribute1
240       ,p_attribute2
241       => p_rec.attribute2
242       ,p_attribute3
243       => p_rec.attribute3
244       ,p_attribute4
245       => p_rec.attribute4
246       ,p_attribute5
247       => p_rec.attribute5
248       ,p_attribute6
249       => p_rec.attribute6
250       ,p_attribute7
251       => p_rec.attribute7
252       ,p_attribute8
253       => p_rec.attribute8
254       ,p_attribute9
255       => p_rec.attribute9
256       ,p_attribute10
257       => p_rec.attribute10
258       ,p_attribute11
259       => p_rec.attribute11
260       ,p_attribute12
261       => p_rec.attribute12
262       ,p_attribute13
263       => p_rec.attribute13
264       ,p_attribute14
265       => p_rec.attribute14
266       ,p_attribute15
267       => p_rec.attribute15
268       ,p_attribute16
269       => p_rec.attribute16
270       ,p_attribute17
271       => p_rec.attribute17
272       ,p_attribute18
273       => p_rec.attribute18
274       ,p_attribute19
275       => p_rec.attribute19
276       ,p_attribute20
277       => p_rec.attribute20
278       ,p_certification_id_o
279       => ota_cmb_shd.g_old_rec.certification_id
280       ,p_object_id_o
281       => ota_cmb_shd.g_old_rec.object_id
282       ,p_object_type_o
283       => ota_cmb_shd.g_old_rec.object_type
284       ,p_member_sequence_o
285       => ota_cmb_shd.g_old_rec.member_sequence
286       ,p_business_group_id_o
287       => ota_cmb_shd.g_old_rec.business_group_id
288       ,p_start_date_active_o
289       => ota_cmb_shd.g_old_rec.start_date_active
290       ,p_end_date_active_o
291       => ota_cmb_shd.g_old_rec.end_date_active
292       ,p_object_version_number_o
293       => ota_cmb_shd.g_old_rec.object_version_number
294       ,p_attribute_category_o
295       => ota_cmb_shd.g_old_rec.attribute_category
296       ,p_attribute1_o
297       => ota_cmb_shd.g_old_rec.attribute1
298       ,p_attribute2_o
299       => ota_cmb_shd.g_old_rec.attribute2
300       ,p_attribute3_o
301       => ota_cmb_shd.g_old_rec.attribute3
302       ,p_attribute4_o
303       => ota_cmb_shd.g_old_rec.attribute4
304       ,p_attribute5_o
305       => ota_cmb_shd.g_old_rec.attribute5
306       ,p_attribute6_o
307       => ota_cmb_shd.g_old_rec.attribute6
308       ,p_attribute7_o
309       => ota_cmb_shd.g_old_rec.attribute7
310       ,p_attribute8_o
311       => ota_cmb_shd.g_old_rec.attribute8
312       ,p_attribute9_o
313       => ota_cmb_shd.g_old_rec.attribute9
314       ,p_attribute10_o
315       => ota_cmb_shd.g_old_rec.attribute10
316       ,p_attribute11_o
317       => ota_cmb_shd.g_old_rec.attribute11
318       ,p_attribute12_o
319       => ota_cmb_shd.g_old_rec.attribute12
320       ,p_attribute13_o
321       => ota_cmb_shd.g_old_rec.attribute13
322       ,p_attribute14_o
323       => ota_cmb_shd.g_old_rec.attribute14
324       ,p_attribute15_o
325       => ota_cmb_shd.g_old_rec.attribute15
326       ,p_attribute16_o
327       => ota_cmb_shd.g_old_rec.attribute16
328       ,p_attribute17_o
329       => ota_cmb_shd.g_old_rec.attribute17
330       ,p_attribute18_o
331       => ota_cmb_shd.g_old_rec.attribute18
332       ,p_attribute19_o
333       => ota_cmb_shd.g_old_rec.attribute19
334       ,p_attribute20_o
335       => ota_cmb_shd.g_old_rec.attribute20
336       );
337     --
338   exception
339     --
340     when hr_api.cannot_find_prog_unit then
341       --
342       hr_api.cannot_find_prog_unit_error
343         (p_module_name => 'OTA_CERTIFICATION_MEMBERS'
344         ,p_hook_type   => 'AU');
345       --
346   end;
347   --
348   hr_utility.set_location(' Leaving:'||l_proc, 10);
349 End post_update;
350 --
351 -- ----------------------------------------------------------------------------
352 -- |-----------------------------< convert_defs >-----------------------------|
353 -- ----------------------------------------------------------------------------
354 -- {Start Of Comments}
355 --
356 -- Description:
357 --   The Convert_Defs procedure has one very important function:
358 --   It must return the record structure for the row with all system defaulted
359 --   values converted into its corresponding parameter value for update. When
360 --   we attempt to update a row through the Upd process , certain
361 --   parameters can be defaulted which enables flexibility in the calling of
362 --   the upd process (e.g. only attributes which need to be updated need to be
363 --   specified). For the upd process to determine which attributes
364 --   have NOT been specified we need to check if the parameter has a reserved
365 --   system default value. Therefore, for all parameters which have a
366 --   corresponding reserved system default mechanism specified we need to
367 --   check if a system default is being used. If a system default is being
368 --   used then we convert the defaulted value into its corresponding attribute
369 --   value held in the g_old_rec data structure.
370 --
371 -- Prerequisites:
372 --   This private function can only be called from the upd process.
373 --
374 -- In Parameters:
375 --   A Pl/Sql record structure.
376 --
377 -- Post Success:
378 --   The record structure will be returned with all system defaulted parameter
379 --   values converted into its current row attribute value.
380 --
381 -- Post Failure:
382 --   No direct error handling is required within this function. Any possible
383 --   errors within this procedure will be a PL/SQL value error due to
384 --   conversion of datatypes or data lengths.
385 --
386 -- Developer Implementation Notes:
387 --   None.
388 --
389 -- Access Status:
390 --   Internal Row Handler Use Only.
391 --
392 -- {End Of Comments}
393 -- ----------------------------------------------------------------------------
394 Procedure convert_defs
395   (p_rec in out nocopy ota_cmb_shd.g_rec_type
396   ) is
397 --
398 Begin
399   --
400   -- We must now examine each argument value in the
401   -- p_rec plsql record structure
402   -- to see if a system default is being used. If a system default
403   -- is being used then we must set to the 'current' argument value.
404   --
405   If (p_rec.certification_id = hr_api.g_number) then
406     p_rec.certification_id :=
407     ota_cmb_shd.g_old_rec.certification_id;
408   End If;
409   If (p_rec.object_id = hr_api.g_number) then
410     p_rec.object_id :=
411     ota_cmb_shd.g_old_rec.object_id;
412   End If;
413   If (p_rec.object_type = hr_api.g_varchar2) then
414     p_rec.object_type :=
415     ota_cmb_shd.g_old_rec.object_type;
416   End If;
417   If (p_rec.member_sequence = hr_api.g_number) then
418     p_rec.member_sequence :=
419     ota_cmb_shd.g_old_rec.member_sequence;
420   End If;
421   If (p_rec.business_group_id = hr_api.g_number) then
422     p_rec.business_group_id :=
423     ota_cmb_shd.g_old_rec.business_group_id;
424   End If;
425   If (p_rec.start_date_active = hr_api.g_date) then
426     p_rec.start_date_active :=
427     ota_cmb_shd.g_old_rec.start_date_active;
428   End If;
429   If (p_rec.end_date_active = hr_api.g_date) then
430     p_rec.end_date_active :=
431     ota_cmb_shd.g_old_rec.end_date_active;
432   End If;
433   If (p_rec.attribute_category = hr_api.g_varchar2) then
434     p_rec.attribute_category :=
435     ota_cmb_shd.g_old_rec.attribute_category;
436   End If;
437   If (p_rec.attribute1 = hr_api.g_varchar2) then
438     p_rec.attribute1 :=
439     ota_cmb_shd.g_old_rec.attribute1;
440   End If;
441   If (p_rec.attribute2 = hr_api.g_varchar2) then
442     p_rec.attribute2 :=
443     ota_cmb_shd.g_old_rec.attribute2;
444   End If;
445   If (p_rec.attribute3 = hr_api.g_varchar2) then
446     p_rec.attribute3 :=
447     ota_cmb_shd.g_old_rec.attribute3;
448   End If;
449   If (p_rec.attribute4 = hr_api.g_varchar2) then
450     p_rec.attribute4 :=
451     ota_cmb_shd.g_old_rec.attribute4;
452   End If;
453   If (p_rec.attribute5 = hr_api.g_varchar2) then
454     p_rec.attribute5 :=
455     ota_cmb_shd.g_old_rec.attribute5;
456   End If;
457   If (p_rec.attribute6 = hr_api.g_varchar2) then
458     p_rec.attribute6 :=
459     ota_cmb_shd.g_old_rec.attribute6;
460   End If;
461   If (p_rec.attribute7 = hr_api.g_varchar2) then
462     p_rec.attribute7 :=
463     ota_cmb_shd.g_old_rec.attribute7;
464   End If;
465   If (p_rec.attribute8 = hr_api.g_varchar2) then
466     p_rec.attribute8 :=
467     ota_cmb_shd.g_old_rec.attribute8;
468   End If;
469   If (p_rec.attribute9 = hr_api.g_varchar2) then
470     p_rec.attribute9 :=
471     ota_cmb_shd.g_old_rec.attribute9;
472   End If;
473   If (p_rec.attribute10 = hr_api.g_varchar2) then
474     p_rec.attribute10 :=
475     ota_cmb_shd.g_old_rec.attribute10;
476   End If;
477   If (p_rec.attribute11 = hr_api.g_varchar2) then
478     p_rec.attribute11 :=
479     ota_cmb_shd.g_old_rec.attribute11;
480   End If;
481   If (p_rec.attribute12 = hr_api.g_varchar2) then
482     p_rec.attribute12 :=
483     ota_cmb_shd.g_old_rec.attribute12;
484   End If;
485   If (p_rec.attribute13 = hr_api.g_varchar2) then
486     p_rec.attribute13 :=
487     ota_cmb_shd.g_old_rec.attribute13;
488   End If;
489   If (p_rec.attribute14 = hr_api.g_varchar2) then
490     p_rec.attribute14 :=
491     ota_cmb_shd.g_old_rec.attribute14;
492   End If;
493   If (p_rec.attribute15 = hr_api.g_varchar2) then
494     p_rec.attribute15 :=
495     ota_cmb_shd.g_old_rec.attribute15;
496   End If;
497   If (p_rec.attribute16 = hr_api.g_varchar2) then
498     p_rec.attribute16 :=
499     ota_cmb_shd.g_old_rec.attribute16;
500   End If;
501   If (p_rec.attribute17 = hr_api.g_varchar2) then
502     p_rec.attribute17 :=
503     ota_cmb_shd.g_old_rec.attribute17;
504   End If;
505   If (p_rec.attribute18 = hr_api.g_varchar2) then
506     p_rec.attribute18 :=
507     ota_cmb_shd.g_old_rec.attribute18;
508   End If;
509   If (p_rec.attribute19 = hr_api.g_varchar2) then
510     p_rec.attribute19 :=
511     ota_cmb_shd.g_old_rec.attribute19;
512   End If;
513   If (p_rec.attribute20 = hr_api.g_varchar2) then
514     p_rec.attribute20 :=
515     ota_cmb_shd.g_old_rec.attribute20;
516   End If;
517   --
518 End convert_defs;
519 --
520 -- ----------------------------------------------------------------------------
521 -- |---------------------------------< upd >----------------------------------|
522 -- ----------------------------------------------------------------------------
523 Procedure upd
524   (p_effective_date               in date
525   ,p_rec                          in out nocopy ota_cmb_shd.g_rec_type
526   ) is
527 --
528   l_proc  varchar2(72) := g_package||'upd';
529 --
530 Begin
531   hr_utility.set_location('Entering:'||l_proc, 5);
532   --
533   -- We must lock the row which we need to update.
534   --
535   ota_cmb_shd.lck
536     (p_rec.certification_member_id
537     ,p_rec.object_version_number
538     );
539   --
540   -- 1. During an update system defaults are used to determine if
541   --    arguments have been defaulted or not. We must therefore
542   --    derive the full record structure values to be updated.
543   --
544   -- 2. Call the supporting update validate operations.
545   --
546   convert_defs(p_rec);
547   ota_cmb_bus.update_validate
548      (p_effective_date
549      ,p_rec
550      );
551   --
552   -- Call to raise any errors on multi-message list
553   hr_multi_message.end_validation_set;
554   --
555   -- Call the supporting pre-update operation
556   --
557   ota_cmb_upd.pre_update(p_rec);
558   --
559   -- Update the row.
560   --
561   ota_cmb_upd.update_dml(p_rec);
562   --
563   -- Call the supporting post-update operation
564   --
565   ota_cmb_upd.post_update
566      (p_effective_date
567      ,p_rec
568      );
569   --
570   -- Call to raise any errors on multi-message list
571   hr_multi_message.end_validation_set;
572 End upd;
573 --
574 -- ----------------------------------------------------------------------------
575 -- |---------------------------------< upd >----------------------------------|
576 -- ----------------------------------------------------------------------------
577 Procedure upd
578   (p_effective_date               in     date
579   ,p_certification_member_id      in     number
580   ,p_object_version_number        in out nocopy number
581   ,p_certification_id             in     number    default hr_api.g_number
582   ,p_object_id                    in     number    default hr_api.g_number
583   ,p_object_type                  in     varchar2  default hr_api.g_varchar2
584   ,p_member_sequence              in     number    default hr_api.g_number
585   ,p_business_group_id            in     number    default hr_api.g_number
586   ,p_start_date_active            in     date      default hr_api.g_date
587   ,p_end_date_active              in     date      default hr_api.g_date
588   ,p_attribute_category           in     varchar2  default hr_api.g_varchar2
589   ,p_attribute1                   in     varchar2  default hr_api.g_varchar2
590   ,p_attribute2                   in     varchar2  default hr_api.g_varchar2
591   ,p_attribute3                   in     varchar2  default hr_api.g_varchar2
592   ,p_attribute4                   in     varchar2  default hr_api.g_varchar2
593   ,p_attribute5                   in     varchar2  default hr_api.g_varchar2
594   ,p_attribute6                   in     varchar2  default hr_api.g_varchar2
595   ,p_attribute7                   in     varchar2  default hr_api.g_varchar2
596   ,p_attribute8                   in     varchar2  default hr_api.g_varchar2
597   ,p_attribute9                   in     varchar2  default hr_api.g_varchar2
598   ,p_attribute10                  in     varchar2  default hr_api.g_varchar2
599   ,p_attribute11                  in     varchar2  default hr_api.g_varchar2
600   ,p_attribute12                  in     varchar2  default hr_api.g_varchar2
601   ,p_attribute13                  in     varchar2  default hr_api.g_varchar2
602   ,p_attribute14                  in     varchar2  default hr_api.g_varchar2
603   ,p_attribute15                  in     varchar2  default hr_api.g_varchar2
604   ,p_attribute16                  in     varchar2  default hr_api.g_varchar2
605   ,p_attribute17                  in     varchar2  default hr_api.g_varchar2
606   ,p_attribute18                  in     varchar2  default hr_api.g_varchar2
607   ,p_attribute19                  in     varchar2  default hr_api.g_varchar2
608   ,p_attribute20                  in     varchar2  default hr_api.g_varchar2
609   ) is
610 --
611   l_rec   ota_cmb_shd.g_rec_type;
612   l_proc  varchar2(72) := g_package||'upd';
613 --
614 Begin
615   hr_utility.set_location('Entering:'||l_proc, 5);
616   --
617   -- Call conversion function to turn arguments into the
618   -- l_rec structure.
619   --
620   l_rec :=
621   ota_cmb_shd.convert_args
622   (p_certification_member_id
623   ,p_certification_id
624   ,p_object_id
625   ,p_object_type
626   ,p_member_sequence
627   ,p_business_group_id
628   ,p_start_date_active
629   ,p_end_date_active
630   ,p_object_version_number
631   ,p_attribute_category
632   ,p_attribute1
633   ,p_attribute2
634   ,p_attribute3
635   ,p_attribute4
636   ,p_attribute5
637   ,p_attribute6
638   ,p_attribute7
639   ,p_attribute8
640   ,p_attribute9
641   ,p_attribute10
642   ,p_attribute11
643   ,p_attribute12
644   ,p_attribute13
645   ,p_attribute14
646   ,p_attribute15
647   ,p_attribute16
648   ,p_attribute17
649   ,p_attribute18
650   ,p_attribute19
651   ,p_attribute20
652   );
653   --
654   -- Having converted the arguments into the
655   -- plsql record structure we call the corresponding record
656   -- business process.
657   --
658   ota_cmb_upd.upd
659      (p_effective_date
660      ,l_rec
661      );
662   p_object_version_number := l_rec.object_version_number;
663   --
664   hr_utility.set_location(' Leaving:'||l_proc, 10);
665 End upd;
666 --
667 end ota_cmb_upd;