DBA Data[Home] [Help]

PACKAGE BODY: APPS.OTA_CTU_UPD

Source


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