DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_SUBCLASS_PUB

Source


1 Package Body OKC_SUBCLASS_PUB AS
2 /* $Header: OKCPSCSB.pls 120.0 2005/05/25 18:21:04 appldev noship $ */
3 	l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
4 
5   PROCEDURE add_language IS
6   BEGIN
7     okc_subclass_pvt.add_language;
8   END;
9   FUNCTION migrate_scsv(p_scsv_rec1 IN scsv_rec_type,
10                         p_scsv_rec2 IN scsv_rec_type)
11     RETURN scsv_rec_type IS
12     l_scsv_rec scsv_rec_type;
13   BEGIN
14     l_scsv_rec.code                  := p_scsv_rec1.code;
15     l_scsv_rec.object_version_number := p_scsv_rec1.object_version_number;
16     l_scsv_rec.sfwt_flag             := p_scsv_rec1.sfwt_flag;
17     l_scsv_rec.cls_code              := p_scsv_rec1.cls_code;
18     l_scsv_rec.created_by            := p_scsv_rec1.created_by;
19     l_scsv_rec.creation_date         := p_scsv_rec1.creation_date;
20     l_scsv_rec.last_updated_by       := p_scsv_rec1.last_updated_by;
21     l_scsv_rec.last_update_date      := p_scsv_rec1.last_update_date;
22     l_scsv_rec.last_update_login     := p_scsv_rec1.last_update_login;
23     l_scsv_rec.meaning               := p_scsv_rec2.meaning;
24     l_scsv_rec.description           := p_scsv_rec2.description;
25     l_scsv_rec.start_date            := p_scsv_rec2.start_date;
26     l_scsv_rec.end_date              := p_scsv_rec2.end_date;
27     l_scsv_rec.create_opp_yn         := p_scsv_rec2.create_opp_yn;
28     l_scsv_rec.access_level          := p_scsv_rec2.access_level;
29     RETURN (l_scsv_rec);
30   END migrate_scsv;
31 
32   FUNCTION migrate_srev(p_srev_rec1 IN srev_rec_type,
33                         p_srev_rec2 IN srev_rec_type)
34     RETURN srev_rec_type IS
35     l_srev_rec srev_rec_type;
36   BEGIN
37     l_srev_rec.id                    := p_srev_rec1.id;
38     l_srev_rec.object_version_number := p_srev_rec1.object_version_number;
39     l_srev_rec.rle_code              := p_srev_rec1.rle_code;
40     l_srev_rec.scs_code              := p_srev_rec1.scs_code;
41     l_srev_rec.created_by            := p_srev_rec1.created_by;
42     l_srev_rec.creation_date         := p_srev_rec1.creation_date;
43     l_srev_rec.last_updated_by       := p_srev_rec1.last_updated_by;
44     l_srev_rec.last_update_date      := p_srev_rec1.last_update_date;
45     l_srev_rec.last_update_login     := p_srev_rec1.last_update_login;
46     l_srev_rec.start_date            := p_srev_rec2.start_date;
47     l_srev_rec.end_date              := p_srev_rec2.end_date;
48     l_srev_rec.access_level          := p_srev_rec2.access_level;
49     RETURN (l_srev_rec);
50   END migrate_srev;
51 
52   FUNCTION migrate_srdv(p_srdv_rec1 IN srdv_rec_type,
53                         p_srdv_rec2 IN srdv_rec_type)
54     RETURN srdv_rec_type IS
55     l_srdv_rec srdv_rec_type;
56   BEGIN
57     l_srdv_rec.id                    := p_srdv_rec1.id;
58     l_srdv_rec.object_version_number := p_srdv_rec1.object_version_number;
59     l_srdv_rec.rgd_code              := p_srdv_rec1.rgd_code;
60     l_srdv_rec.scs_code              := p_srdv_rec1.scs_code;
61     l_srdv_rec.created_by            := p_srdv_rec1.created_by;
62     l_srdv_rec.creation_date         := p_srdv_rec1.creation_date;
63     l_srdv_rec.last_updated_by       := p_srdv_rec1.last_updated_by;
64     l_srdv_rec.last_update_date      := p_srdv_rec1.last_update_date;
65     l_srdv_rec.last_update_login     := p_srdv_rec1.last_update_login;
66     l_srdv_rec.start_date            := p_srdv_rec2.start_date;
67     l_srdv_rec.end_date              := p_srdv_rec2.end_date;
68     l_srdv_rec.access_level          := p_srdv_rec2.access_level;
69     RETURN (l_srdv_rec);
70   END migrate_srdv;
71 
72   FUNCTION migrate_rrdv(p_rrdv_rec1 IN rrdv_rec_type,
73                         p_rrdv_rec2 IN rrdv_rec_type)
74     RETURN rrdv_rec_type IS
75     l_rrdv_rec rrdv_rec_type;
76   BEGIN
77     l_rrdv_rec.id                    := p_rrdv_rec1.id;
78     l_rrdv_rec.object_version_number := p_rrdv_rec1.object_version_number;
79     l_rrdv_rec.srd_id                := p_rrdv_rec1.srd_id;
80     l_rrdv_rec.sre_id                := p_rrdv_rec1.sre_id;
81     l_rrdv_rec.created_by            := p_rrdv_rec1.created_by;
82     l_rrdv_rec.creation_date         := p_rrdv_rec1.creation_date;
83     l_rrdv_rec.last_updated_by       := p_rrdv_rec1.last_updated_by;
84     l_rrdv_rec.last_update_date      := p_rrdv_rec1.last_update_date;
85     l_rrdv_rec.last_update_login     := p_rrdv_rec1.last_update_login;
86     l_rrdv_rec.optional_yn           := p_rrdv_rec2.optional_yn;
87     l_rrdv_rec.subject_object_flag   := p_rrdv_rec2.subject_object_flag;
88     l_rrdv_rec.attribute_category    := p_rrdv_rec2.attribute_category;
89     l_rrdv_rec.attribute1            := p_rrdv_rec2.attribute1;
90     l_rrdv_rec.attribute2            := p_rrdv_rec2.attribute2;
91     l_rrdv_rec.attribute3            := p_rrdv_rec2.attribute3;
92     l_rrdv_rec.attribute4            := p_rrdv_rec2.attribute4;
93     l_rrdv_rec.attribute5            := p_rrdv_rec2.attribute5;
94     l_rrdv_rec.attribute6            := p_rrdv_rec2.attribute6;
95     l_rrdv_rec.attribute7            := p_rrdv_rec2.attribute7;
96     l_rrdv_rec.attribute8            := p_rrdv_rec2.attribute8;
97     l_rrdv_rec.attribute9            := p_rrdv_rec2.attribute9;
98     l_rrdv_rec.attribute10           := p_rrdv_rec2.attribute10;
99     l_rrdv_rec.attribute11           := p_rrdv_rec2.attribute11;
100     l_rrdv_rec.attribute12           := p_rrdv_rec2.attribute12;
101     l_rrdv_rec.attribute13           := p_rrdv_rec2.attribute13;
102     l_rrdv_rec.attribute14           := p_rrdv_rec2.attribute14;
103     l_rrdv_rec.attribute15           := p_rrdv_rec2.attribute15;
104     l_rrdv_rec.access_level          := p_rrdv_rec2.access_level;
105     RETURN (l_rrdv_rec);
106   END migrate_rrdv;
107 
108   FUNCTION migrate_stlv(p_stlv_rec1 IN stlv_rec_type,
109                         p_stlv_rec2 IN stlv_rec_type)
110     RETURN stlv_rec_type IS
111     l_stlv_rec stlv_rec_type;
112   BEGIN
113     l_stlv_rec.lse_id                := p_stlv_rec1.lse_id;
114     l_stlv_rec.scs_code              := p_stlv_rec1.scs_code;
115     l_stlv_rec.object_version_number := p_stlv_rec1.object_version_number;
116     l_stlv_rec.created_by            := p_stlv_rec1.created_by;
117     l_stlv_rec.creation_date         := p_stlv_rec1.creation_date;
118     l_stlv_rec.last_updated_by       := p_stlv_rec1.last_updated_by;
119     l_stlv_rec.last_update_date      := p_stlv_rec1.last_update_date;
120     l_stlv_rec.last_update_login     := p_stlv_rec1.last_update_login;
121     l_stlv_rec.start_date            := p_stlv_rec2.start_date;
122     l_stlv_rec.end_date              := p_stlv_rec2.end_date;
123     l_stlv_rec.access_level          := p_stlv_rec2.access_level;
124     RETURN (l_stlv_rec);
125   END migrate_stlv;
126 
127   FUNCTION migrate_lsrv(p_lsrv_rec1 IN lsrv_rec_type,
128                         p_lsrv_rec2 IN lsrv_rec_type)
129     RETURN lsrv_rec_type IS
130     l_lsrv_rec lsrv_rec_type;
131   BEGIN
132     l_lsrv_rec.lse_id                := p_lsrv_rec1.lse_id;
133     l_lsrv_rec.sre_id                := p_lsrv_rec1.sre_id;
134     l_lsrv_rec.object_version_number := p_lsrv_rec1.object_version_number;
135     l_lsrv_rec.created_by            := p_lsrv_rec1.created_by;
136     l_lsrv_rec.creation_date         := p_lsrv_rec1.creation_date;
137     l_lsrv_rec.last_updated_by       := p_lsrv_rec1.last_updated_by;
138     l_lsrv_rec.last_update_date      := p_lsrv_rec1.last_update_date;
139     l_lsrv_rec.last_update_login     := p_lsrv_rec1.last_update_login;
140     l_lsrv_rec.access_level          := p_lsrv_rec1.access_level;
141     RETURN (l_lsrv_rec);
142   END migrate_lsrv;
143 
144   FUNCTION migrate_lrgv(p_lrgv_rec1 IN lrgv_rec_type,
145                         p_lrgv_rec2 IN lrgv_rec_type)
146     RETURN lrgv_rec_type IS
147     l_lrgv_rec lrgv_rec_type;
148   BEGIN
149     l_lrgv_rec.lse_id                := p_lrgv_rec1.lse_id;
150     l_lrgv_rec.srd_id                := p_lrgv_rec1.srd_id;
151     l_lrgv_rec.object_version_number := p_lrgv_rec1.object_version_number;
152     l_lrgv_rec.created_by            := p_lrgv_rec1.created_by;
153     l_lrgv_rec.creation_date         := p_lrgv_rec1.creation_date;
154     l_lrgv_rec.last_updated_by       := p_lrgv_rec1.last_updated_by;
155     l_lrgv_rec.last_update_date      := p_lrgv_rec1.last_update_date;
156     l_lrgv_rec.last_update_login     := p_lrgv_rec1.last_update_login;
157     l_lrgv_rec.access_level          := p_lrgv_rec1.access_level;
158     RETURN (l_lrgv_rec);
159   END migrate_lrgv;
160 
161   FUNCTION migrate_srav(p_srav_rec1 IN srav_rec_type,
162                         p_srav_rec2 IN srav_rec_type)
163     RETURN srav_rec_type IS
164     l_srav_rec srav_rec_type;
165   BEGIN
166     l_srav_rec.scs_code              := p_srav_rec1.scs_code;
167     l_srav_rec.resp_id               := p_srav_rec1.resp_id;
168     l_srav_rec.access_level          := p_srav_rec1.access_level;
169     l_srav_rec.created_by            := p_srav_rec1.created_by;
170     l_srav_rec.creation_date         := p_srav_rec1.creation_date;
171     l_srav_rec.last_updated_by       := p_srav_rec1.last_updated_by;
172     l_srav_rec.last_update_date      := p_srav_rec1.last_update_date;
173     l_srav_rec.last_update_login     := p_srav_rec1.last_update_login;
174     l_srav_rec.start_date            := p_srav_rec2.start_date;
175     l_srav_rec.end_date              := p_srav_rec2.end_date;
176     RETURN (l_srav_rec);
177   END migrate_srav;
178 
179  PROCEDURE create_subclass(
180     p_api_version                  IN NUMBER,
181     p_init_msg_list                IN VARCHAR2 ,
182     x_return_status                OUT NOCOPY VARCHAR2,
183     x_msg_count                    OUT NOCOPY NUMBER,
184     x_msg_data                     OUT NOCOPY VARCHAR2,
185     p_scsv_rec                     IN scsv_rec_type,
186     x_scsv_rec                     OUT NOCOPY scsv_rec_type) IS
187     l_api_name                     CONSTANT VARCHAR2(30) := 'create_subclass';
188     l_return_status		   VARCHAR2(1);
189     l_scsv_rec                     scsv_rec_type := p_scsv_rec;
190   BEGIN
191     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
192 					      p_init_msg_list,
193 					      '_PUB',
194                                               x_return_status);
195     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
196       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
197     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
198       raise OKC_API.G_EXCEPTION_ERROR;
199     END IF;
200     -- Call user hook for BEFORE
201     g_scsv_rec := l_scsv_rec;
202     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
203     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
204       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
205     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
206       raise OKC_API.G_EXCEPTION_ERROR;
207     END IF;
208     l_scsv_rec := migrate_scsv(l_scsv_rec, g_scsv_rec);
209 
210     okc_subclass_pvt.create_subclass(
211                 p_api_version,
212                 p_init_msg_list,
213                 x_return_status,
214                 x_msg_count,
215                 x_msg_data,
216                 l_scsv_rec,
217                 x_scsv_rec);
218     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
219       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
220     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
221       raise OKC_API.G_EXCEPTION_ERROR;
222     END IF;
223 
224     -- Call user hook for AFTER
225     g_scsv_rec := x_scsv_rec;
226     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
227     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
228       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
229     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
230       raise OKC_API.G_EXCEPTION_ERROR;
231     END IF;
232     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
233   EXCEPTION
234     WHEN OKC_API.G_EXCEPTION_ERROR THEN
235       x_return_status := OKC_API.HANDLE_EXCEPTIONS
236       (l_api_name,
237        G_PKG_NAME,
238        'OKC_API.G_RET_STS_ERROR',
239        x_msg_count,
240        x_msg_data,
241        '_PUB');
242     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
243       x_return_status := OKC_API.HANDLE_EXCEPTIONS
244       (l_api_name,
245        G_PKG_NAME,
246        'OKC_API.G_RET_STS_UNEXP_ERROR',
247        x_msg_count,
248        x_msg_data,
249        '_PUB');
250     WHEN OTHERS THEN
251       x_return_status := OKC_API.HANDLE_EXCEPTIONS
252       (l_api_name,
253        G_PKG_NAME,
254        'OTHERS',
255        x_msg_count,
256        x_msg_data,
257        '_PUB');
258  END create_subclass;
259 
260  PROCEDURE create_subclass(
261     p_api_version                  IN NUMBER,
262     p_init_msg_list                IN VARCHAR2 ,
263     x_return_status                OUT NOCOPY VARCHAR2,
264     x_msg_count                    OUT NOCOPY NUMBER,
265     x_msg_data                     OUT NOCOPY VARCHAR2,
266     p_scsv_tbl                     IN  scsv_tbl_type,
267     x_scsv_tbl                     OUT NOCOPY scsv_tbl_type) IS
268     i				   NUMBER := 0;
269     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
270   BEGIN
271     x_return_status := OKC_API.G_RET_STS_SUCCESS;
272     IF p_scsv_tbl.COUNT > 0 THEN
273       i := p_scsv_tbl.FIRST;
274       LOOP
275         create_subclass(
276                 p_api_version,
277                 p_init_msg_list,
278                 l_return_status,
279                 x_msg_count,
280                 x_msg_data,
281                 p_scsv_tbl(i),
282                 x_scsv_tbl(i));
283         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
284           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
285             x_return_status := l_return_status;
286             raise G_EXCEPTION_HALT_VALIDATION;
287           ELSE
288             x_return_status := l_return_status;
289           END IF;
290         END IF;
291         EXIT WHEN (i = p_scsv_tbl.LAST);
292         i := p_scsv_tbl.NEXT(i);
293       END LOOP;
294     END IF;
295   EXCEPTION
296     WHEN G_EXCEPTION_HALT_VALIDATION THEN
297       NULL;
298     WHEN OTHERS THEN
299       OKC_API.set_message(p_app_name      => g_app_name,
300                           p_msg_name      => g_unexpected_error,
301                           p_token1        => g_sqlcode_token,
302                           p_token1_value  => sqlcode,
303                           p_token2        => g_sqlerrm_token,
304                           p_token2_value  => sqlerrm);
305       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
306  END create_subclass;
307 
308 
309  PROCEDURE update_subclass(
310     p_api_version                  IN NUMBER,
311     p_init_msg_list                IN VARCHAR2 ,
312     x_return_status                OUT NOCOPY VARCHAR2,
313     x_msg_count                    OUT NOCOPY NUMBER,
314     x_msg_data                     OUT NOCOPY VARCHAR2,
315     p_scsv_rec                     IN scsv_rec_type,
316     x_scsv_rec                     OUT NOCOPY scsv_rec_type) IS
317     l_api_name                     CONSTANT VARCHAR2(30) := 'update_subclass';
318     l_return_status		   VARCHAR2(1);
319     l_scsv_rec                     scsv_rec_type := p_scsv_rec;
320   BEGIN
321     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
322 					      p_init_msg_list,
323 					      '_PUB',
324                                               x_return_status);
325     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
326       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
327     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
328       raise OKC_API.G_EXCEPTION_ERROR;
329     END IF;
330     -- Call user hook for BEFORE
331     g_scsv_rec := l_scsv_rec;
332     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
333     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
334       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
335     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
336       raise OKC_API.G_EXCEPTION_ERROR;
337     END IF;
338     l_scsv_rec := migrate_scsv(l_scsv_rec, g_scsv_rec);
339 
340     okc_subclass_pvt.update_subclass(
341                 p_api_version,
342                 p_init_msg_list,
343                 x_return_status,
344                 x_msg_count,
345                 x_msg_data,
346                 l_scsv_rec,
347                 x_scsv_rec);
348     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
349       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
350     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
351       raise OKC_API.G_EXCEPTION_ERROR;
352     END IF;
353 
354     -- Call user hook for AFTER
355     g_scsv_rec := x_scsv_rec;
356     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
357     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
358       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
359     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
360       raise OKC_API.G_EXCEPTION_ERROR;
361     END IF;
362     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
363   EXCEPTION
364     WHEN OKC_API.G_EXCEPTION_ERROR THEN
365       x_return_status := OKC_API.HANDLE_EXCEPTIONS
366       (l_api_name,
367        G_PKG_NAME,
368        'OKC_API.G_RET_STS_ERROR',
369        x_msg_count,
370        x_msg_data,
371        '_PUB');
372     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
373       x_return_status := OKC_API.HANDLE_EXCEPTIONS
374       (l_api_name,
375        G_PKG_NAME,
376        'OKC_API.G_RET_STS_UNEXP_ERROR',
377        x_msg_count,
378        x_msg_data,
379        '_PUB');
380     WHEN OTHERS THEN
381       x_return_status := OKC_API.HANDLE_EXCEPTIONS
382       (l_api_name,
383        G_PKG_NAME,
384        'OTHERS',
385        x_msg_count,
386        x_msg_data,
387        '_PUB');
388  END update_subclass;
389 
390 
391  PROCEDURE update_subclass(
392     p_api_version                  IN NUMBER,
393     p_init_msg_list                IN VARCHAR2 ,
394     x_return_status                OUT NOCOPY VARCHAR2,
395     x_msg_count                    OUT NOCOPY NUMBER,
396     x_msg_data                     OUT NOCOPY VARCHAR2,
397     p_scsv_tbl                     IN  scsv_tbl_type,
398     x_scsv_tbl                     OUT NOCOPY scsv_tbl_type) IS
399     i				   NUMBER := 0;
400     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
401   BEGIN
402     x_return_status := OKC_API.G_RET_STS_SUCCESS;
403     IF p_scsv_tbl.COUNT > 0 THEN
404       i := p_scsv_tbl.FIRST;
405       LOOP
406         update_subclass(
407                 p_api_version,
408                 p_init_msg_list,
409                 l_return_status,
410                 x_msg_count,
411                 x_msg_data,
412                 p_scsv_tbl(i),
413                 x_scsv_tbl(i));
414         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
415           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
416             x_return_status := l_return_status;
417             raise G_EXCEPTION_HALT_VALIDATION;
418           ELSE
419             x_return_status := l_return_status;
420           END IF;
421         END IF;
422         EXIT WHEN (i = p_scsv_tbl.LAST);
423         i := p_scsv_tbl.NEXT(i);
424       END LOOP;
425     END IF;
426   EXCEPTION
427     WHEN G_EXCEPTION_HALT_VALIDATION THEN
428       NULL;
429     WHEN OTHERS THEN
430       OKC_API.set_message(p_app_name      => g_app_name,
431                           p_msg_name      => g_unexpected_error,
432                           p_token1        => g_sqlcode_token,
433                           p_token1_value  => sqlcode,
434                           p_token2        => g_sqlerrm_token,
435                           p_token2_value  => sqlerrm);
436       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
437  END update_subclass;
438 
439  PROCEDURE delete_subclass(
440     p_api_version                  IN NUMBER,
441     p_init_msg_list                IN VARCHAR2 ,
442     x_return_status                OUT NOCOPY VARCHAR2,
443     x_msg_count                    OUT NOCOPY NUMBER,
444     x_msg_data                     OUT NOCOPY VARCHAR2,
445     p_scsv_rec                     IN scsv_rec_type) IS
446     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_subclass';
447     l_return_status		   VARCHAR2(1);
448     l_scsv_rec                     scsv_rec_type := p_scsv_rec;
449   BEGIN
450     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
451 					      p_init_msg_list,
452 					      '_PUB',
453                                               x_return_status);
454     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
455       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
456     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
457       raise OKC_API.G_EXCEPTION_ERROR;
458     END IF;
459     -- Call user hook for BEFORE
460     g_scsv_rec := l_scsv_rec;
461     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
462     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
463       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
464     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
465       raise OKC_API.G_EXCEPTION_ERROR;
466     END IF;
467 
468     okc_subclass_pvt.delete_subclass(
469                 p_api_version,
470                 p_init_msg_list,
471                 x_return_status,
472                 x_msg_count,
473                 x_msg_data,
474                 p_scsv_rec);
475     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
476       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
477     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
478       raise OKC_API.G_EXCEPTION_ERROR;
479     END IF;
480 
481     -- Call user hook for AFTER
482     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
483     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
484       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
485     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
486       raise OKC_API.G_EXCEPTION_ERROR;
487     END IF;
488     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
489   EXCEPTION
490     WHEN OKC_API.G_EXCEPTION_ERROR THEN
491       x_return_status := OKC_API.HANDLE_EXCEPTIONS
492       (l_api_name,
493        G_PKG_NAME,
494        'OKC_API.G_RET_STS_ERROR',
495        x_msg_count,
496        x_msg_data,
497        '_PUB');
498     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
499       x_return_status := OKC_API.HANDLE_EXCEPTIONS
500       (l_api_name,
501        G_PKG_NAME,
502        'OKC_API.G_RET_STS_UNEXP_ERROR',
503        x_msg_count,
504        x_msg_data,
505        '_PUB');
506     WHEN OTHERS THEN
507       x_return_status := OKC_API.HANDLE_EXCEPTIONS
508       (l_api_name,
509        G_PKG_NAME,
510        'OTHERS',
511        x_msg_count,
512        x_msg_data,
513        '_PUB');
514  END delete_subclass;
515 
516  PROCEDURE delete_subclass(
517     p_api_version                  IN NUMBER,
518     p_init_msg_list                IN VARCHAR2 ,
519     x_return_status                OUT NOCOPY VARCHAR2,
520     x_msg_count                    OUT NOCOPY NUMBER,
521     x_msg_data                     OUT NOCOPY VARCHAR2,
522     p_scsv_tbl                     IN  scsv_tbl_type) IS
523     i				   NUMBER := 0;
524     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
525   BEGIN
526     x_return_status := OKC_API.G_RET_STS_SUCCESS;
527     IF p_scsv_tbl.COUNT > 0 THEN
528       i := p_scsv_tbl.FIRST;
529       LOOP
530         delete_subclass(
531                 p_api_version,
532                 p_init_msg_list,
533                 l_return_status,
534                 x_msg_count,
535                 x_msg_data,
536                 p_scsv_tbl(i));
537         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
538           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
539             x_return_status := l_return_status;
540             raise G_EXCEPTION_HALT_VALIDATION;
541           ELSE
542             x_return_status := l_return_status;
543           END IF;
544         END IF;
545         EXIT WHEN (i = p_scsv_tbl.LAST);
546         i := p_scsv_tbl.NEXT(i);
547       END LOOP;
548     END IF;
549   EXCEPTION
550     WHEN G_EXCEPTION_HALT_VALIDATION THEN
551       NULL;
552     WHEN OTHERS THEN
553       OKC_API.set_message(p_app_name      => g_app_name,
554                           p_msg_name      => g_unexpected_error,
555                           p_token1        => g_sqlcode_token,
556                           p_token1_value  => sqlcode,
557                           p_token2        => g_sqlerrm_token,
558                           p_token2_value  => sqlerrm);
559       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
560  END delete_subclass;
561 
562  PROCEDURE lock_subclass(
563     p_api_version                  IN NUMBER,
564     p_init_msg_list                IN VARCHAR2 ,
565     x_return_status                OUT NOCOPY VARCHAR2,
566     x_msg_count                    OUT NOCOPY NUMBER,
567     x_msg_data                     OUT NOCOPY VARCHAR2,
568     p_scsv_rec                     IN scsv_rec_type) IS
569  BEGIN
570     okc_subclass_pvt.lock_subclass(
571                 p_api_version,
572                 p_init_msg_list,
573                 x_return_status,
574                 x_msg_count,
575                 x_msg_data,
576                 p_scsv_rec);
577  END lock_subclass;
578 
579  PROCEDURE lock_subclass(
580     p_api_version                  IN NUMBER,
581     p_init_msg_list                IN VARCHAR2 ,
582     x_return_status                OUT NOCOPY VARCHAR2,
583     x_msg_count                    OUT NOCOPY NUMBER,
584     x_msg_data                     OUT NOCOPY VARCHAR2,
585     p_scsv_tbl                     IN  scsv_tbl_type) IS
586  BEGIN
587     okc_subclass_pvt.lock_subclass(
588                 p_api_version,
589                 p_init_msg_list,
590                 x_return_status,
591                 x_msg_count,
592                 x_msg_data,
593                 p_scsv_tbl);
594  END lock_subclass;
595 
596  PROCEDURE validate_subclass(
597     p_api_version                  IN NUMBER,
598     p_init_msg_list                IN VARCHAR2 ,
599     x_return_status                OUT NOCOPY VARCHAR2,
600     x_msg_count                    OUT NOCOPY NUMBER,
601     x_msg_data                     OUT NOCOPY VARCHAR2,
602     p_scsv_rec                     IN scsv_rec_type) IS
603  BEGIN
604     okc_subclass_pvt.validate_subclass(
605                 p_api_version,
606                 p_init_msg_list,
607                 x_return_status,
608                 x_msg_count,
609                 x_msg_data,
610                 p_scsv_rec);
611  END validate_subclass;
612 
613  PROCEDURE validate_subclass(
614     p_api_version                  IN NUMBER,
615     p_init_msg_list                IN VARCHAR2 ,
616     x_return_status                OUT NOCOPY VARCHAR2,
617     x_msg_count                    OUT NOCOPY NUMBER,
618     x_msg_data                     OUT NOCOPY VARCHAR2,
619     p_scsv_tbl                     IN  scsv_tbl_type) IS
620  BEGIN
621     okc_subclass_pvt.validate_subclass(
622                 p_api_version,
623                 p_init_msg_list,
624                 x_return_status,
625                 x_msg_count,
626                 x_msg_data,
627                 p_scsv_tbl);
628  END validate_subclass;
629 
630  PROCEDURE create_subclass_roles(
631     p_api_version                  IN NUMBER,
632     p_init_msg_list                IN VARCHAR2 ,
633     x_return_status                OUT NOCOPY VARCHAR2,
634     x_msg_count                    OUT NOCOPY NUMBER,
635     x_msg_data                     OUT NOCOPY VARCHAR2,
636     p_srev_rec                     IN srev_rec_type,
637     x_srev_rec                     OUT NOCOPY srev_rec_type) IS
638     l_api_name                     CONSTANT VARCHAR2(30) := 'create_subclass_roles';
639     l_return_status		   VARCHAR2(1);
640     l_srev_rec                     srev_rec_type := p_srev_rec;
641   BEGIN
642     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
643 					      p_init_msg_list,
644 					      '_PUB',
645                                               x_return_status);
646     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
647       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
648     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
649       raise OKC_API.G_EXCEPTION_ERROR;
650     END IF;
651     -- Call user hook for BEFORE
652     g_srev_rec := l_srev_rec;
653     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
654     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
655       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
656     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
657       raise OKC_API.G_EXCEPTION_ERROR;
658     END IF;
659     l_srev_rec := migrate_srev(l_srev_rec, g_srev_rec);
660 
661     okc_subclass_pvt.create_subclass_roles(
662                 p_api_version,
663                 p_init_msg_list,
664                 x_return_status,
665                 x_msg_count,
666                 x_msg_data,
667                 l_srev_rec,
668                 x_srev_rec);
669     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
670       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
671     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
672       raise OKC_API.G_EXCEPTION_ERROR;
673     END IF;
674 
675     -- Call user hook for AFTER
676     g_srev_rec := x_srev_rec;
677     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
678     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
679       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
680     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
681       raise OKC_API.G_EXCEPTION_ERROR;
682     END IF;
683     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
684   EXCEPTION
685     WHEN OKC_API.G_EXCEPTION_ERROR THEN
686       x_return_status := OKC_API.HANDLE_EXCEPTIONS
687       (l_api_name,
688        G_PKG_NAME,
689        'OKC_API.G_RET_STS_ERROR',
690        x_msg_count,
691        x_msg_data,
692        '_PUB');
693     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
694       x_return_status := OKC_API.HANDLE_EXCEPTIONS
695       (l_api_name,
696        G_PKG_NAME,
697        'OKC_API.G_RET_STS_UNEXP_ERROR',
698        x_msg_count,
699        x_msg_data,
700        '_PUB');
701     WHEN OTHERS THEN
702       x_return_status := OKC_API.HANDLE_EXCEPTIONS
703       (l_api_name,
704        G_PKG_NAME,
705        'OTHERS',
706        x_msg_count,
707        x_msg_data,
708        '_PUB');
709  END create_subclass_roles;
710 
711  PROCEDURE create_subclass_roles(
712     p_api_version                  IN NUMBER,
713     p_init_msg_list                IN VARCHAR2 ,
714     x_return_status                OUT NOCOPY VARCHAR2,
715     x_msg_count                    OUT NOCOPY NUMBER,
716     x_msg_data                     OUT NOCOPY VARCHAR2,
717     p_srev_tbl                     IN  srev_tbl_type,
718     x_srev_tbl                     OUT NOCOPY srev_tbl_type) IS
719     i				   NUMBER := 0;
720     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
721   BEGIN
722     x_return_status := OKC_API.G_RET_STS_SUCCESS;
723     IF p_srev_tbl.COUNT > 0 THEN
724       i := p_srev_tbl.FIRST;
725       LOOP
726         create_subclass_roles(
727                 p_api_version,
728                 p_init_msg_list,
729                 l_return_status,
730                 x_msg_count,
731                 x_msg_data,
732                 p_srev_tbl(i),
733                 x_srev_tbl(i));
734         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
735           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
736             x_return_status := l_return_status;
737             raise G_EXCEPTION_HALT_VALIDATION;
738           ELSE
739             x_return_status := l_return_status;
740           END IF;
741         END IF;
742         EXIT WHEN (i = p_srev_tbl.LAST);
743         i := p_srev_tbl.NEXT(i);
744       END LOOP;
745     END IF;
746   EXCEPTION
747     WHEN G_EXCEPTION_HALT_VALIDATION THEN
748       NULL;
749     WHEN OTHERS THEN
750       OKC_API.set_message(p_app_name      => g_app_name,
751                           p_msg_name      => g_unexpected_error,
752                           p_token1        => g_sqlcode_token,
753                           p_token1_value  => sqlcode,
754                           p_token2        => g_sqlerrm_token,
755                           p_token2_value  => sqlerrm);
756       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
757  END create_subclass_roles;
758 
759  PROCEDURE update_subclass_roles(
760     p_api_version                  IN NUMBER,
761     p_init_msg_list                IN VARCHAR2 ,
762     x_return_status                OUT NOCOPY VARCHAR2,
763     x_msg_count                    OUT NOCOPY NUMBER,
764     x_msg_data                     OUT NOCOPY VARCHAR2,
765     p_srev_rec                     IN srev_rec_type,
766     x_srev_rec                     OUT NOCOPY srev_rec_type) IS
767     l_api_name                     CONSTANT VARCHAR2(30) := 'update_subclass_roles';
768     l_return_status		   VARCHAR2(1);
769     l_srev_rec                     srev_rec_type := p_srev_rec;
770   BEGIN
771     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
772 					      p_init_msg_list,
773 					      '_PUB',
774                                               x_return_status);
775     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
776       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
777     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
778       raise OKC_API.G_EXCEPTION_ERROR;
779     END IF;
780     -- Call user hook for BEFORE
781     g_srev_rec := l_srev_rec;
782     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
783     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
784       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
785     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
786       raise OKC_API.G_EXCEPTION_ERROR;
787     END IF;
788     l_srev_rec := migrate_srev(l_srev_rec, g_srev_rec);
789 
790     okc_subclass_pvt.update_subclass_roles(
791                 p_api_version,
792                 p_init_msg_list,
793                 x_return_status,
794                 x_msg_count,
795                 x_msg_data,
796                 l_srev_rec,
797                 x_srev_rec);
798     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
799       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
800     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
801       raise OKC_API.G_EXCEPTION_ERROR;
802     END IF;
803 
804     -- Call user hook for AFTER
805     g_srev_rec := x_srev_rec;
806     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
807     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
808       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
809     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
810       raise OKC_API.G_EXCEPTION_ERROR;
811     END IF;
812     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
813   EXCEPTION
814     WHEN OKC_API.G_EXCEPTION_ERROR THEN
815       x_return_status := OKC_API.HANDLE_EXCEPTIONS
816       (l_api_name,
817        G_PKG_NAME,
818        'OKC_API.G_RET_STS_ERROR',
819        x_msg_count,
820        x_msg_data,
821        '_PUB');
822     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
823       x_return_status := OKC_API.HANDLE_EXCEPTIONS
824       (l_api_name,
825        G_PKG_NAME,
826        'OKC_API.G_RET_STS_UNEXP_ERROR',
827        x_msg_count,
828        x_msg_data,
829        '_PUB');
830     WHEN OTHERS THEN
831       x_return_status := OKC_API.HANDLE_EXCEPTIONS
832       (l_api_name,
833        G_PKG_NAME,
834        'OTHERS',
835        x_msg_count,
836        x_msg_data,
837        '_PUB');
838  END update_subclass_roles;
839 
840  PROCEDURE update_subclass_roles(
841     p_api_version                  IN NUMBER,
842     p_init_msg_list                IN VARCHAR2 ,
843     x_return_status                OUT NOCOPY VARCHAR2,
844     x_msg_count                    OUT NOCOPY NUMBER,
845     x_msg_data                     OUT NOCOPY VARCHAR2,
846     p_srev_tbl                     IN  srev_tbl_type,
847     x_srev_tbl                     OUT NOCOPY srev_tbl_type) IS
848     i				   NUMBER := 0;
849     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
850   BEGIN
851     x_return_status := OKC_API.G_RET_STS_SUCCESS;
852     IF p_srev_tbl.COUNT > 0 THEN
853       i := p_srev_tbl.FIRST;
854       LOOP
855         update_subclass_roles(
856                 p_api_version,
857                 p_init_msg_list,
858                 l_return_status,
859                 x_msg_count,
860                 x_msg_data,
861                 p_srev_tbl(i),
862                 x_srev_tbl(i));
863         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
864           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
865             x_return_status := l_return_status;
866             raise G_EXCEPTION_HALT_VALIDATION;
867           ELSE
868             x_return_status := l_return_status;
869           END IF;
870         END IF;
871         EXIT WHEN (i = p_srev_tbl.LAST);
872         i := p_srev_tbl.NEXT(i);
873       END LOOP;
874     END IF;
875   EXCEPTION
876     WHEN G_EXCEPTION_HALT_VALIDATION THEN
877       NULL;
878     WHEN OTHERS THEN
879       OKC_API.set_message(p_app_name      => g_app_name,
880                           p_msg_name      => g_unexpected_error,
881                           p_token1        => g_sqlcode_token,
882                           p_token1_value  => sqlcode,
883                           p_token2        => g_sqlerrm_token,
884                           p_token2_value  => sqlerrm);
885       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
886  END update_subclass_roles;
887 
888  PROCEDURE delete_subclass_roles(
889     p_api_version                  IN NUMBER,
890     p_init_msg_list                IN VARCHAR2 ,
891     x_return_status                OUT NOCOPY VARCHAR2,
892     x_msg_count                    OUT NOCOPY NUMBER,
893     x_msg_data                     OUT NOCOPY VARCHAR2,
894     p_srev_rec                     IN srev_rec_type) IS
895     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_subclass_roles';
896     l_return_status		   VARCHAR2(1);
897     l_srev_rec                     srev_rec_type := p_srev_rec;
898   BEGIN
899     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
900 					      p_init_msg_list,
901 					      '_PUB',
902                                               x_return_status);
903     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
904       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
905     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
906       raise OKC_API.G_EXCEPTION_ERROR;
907     END IF;
908     -- Call user hook for BEFORE
909     g_srev_rec := l_srev_rec;
910     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
911     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
912       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
913     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
914       raise OKC_API.G_EXCEPTION_ERROR;
915     END IF;
916 
917     okc_subclass_pvt.delete_subclass_roles(
918                 p_api_version,
919                 p_init_msg_list,
920                 x_return_status,
921                 x_msg_count,
922                 x_msg_data,
923                 p_srev_rec);
924     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
925       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
926     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
927       raise OKC_API.G_EXCEPTION_ERROR;
928     END IF;
929 
930     -- Call user hook for AFTER
931     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
932     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
933       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
934     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
935       raise OKC_API.G_EXCEPTION_ERROR;
936     END IF;
937     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
938   EXCEPTION
939     WHEN OKC_API.G_EXCEPTION_ERROR THEN
940       x_return_status := OKC_API.HANDLE_EXCEPTIONS
941       (l_api_name,
942        G_PKG_NAME,
943        'OKC_API.G_RET_STS_ERROR',
944        x_msg_count,
945        x_msg_data,
946        '_PUB');
947     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
948       x_return_status := OKC_API.HANDLE_EXCEPTIONS
949       (l_api_name,
950        G_PKG_NAME,
951        'OKC_API.G_RET_STS_UNEXP_ERROR',
952        x_msg_count,
953        x_msg_data,
954        '_PUB');
955     WHEN OTHERS THEN
956       x_return_status := OKC_API.HANDLE_EXCEPTIONS
957       (l_api_name,
958        G_PKG_NAME,
959        'OTHERS',
960        x_msg_count,
961        x_msg_data,
962        '_PUB');
963  END delete_subclass_roles;
964 
965  PROCEDURE delete_subclass_roles(
966     p_api_version                  IN NUMBER,
967     p_init_msg_list                IN VARCHAR2 ,
968     x_return_status                OUT NOCOPY VARCHAR2,
969     x_msg_count                    OUT NOCOPY NUMBER,
970     x_msg_data                     OUT NOCOPY VARCHAR2,
971     p_srev_tbl                     IN  srev_tbl_type) IS
972     i				   NUMBER := 0;
973     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
974   BEGIN
975     x_return_status := OKC_API.G_RET_STS_SUCCESS;
976     IF p_srev_tbl.COUNT > 0 THEN
977       i := p_srev_tbl.FIRST;
978       LOOP
979         delete_subclass_roles(
980                 p_api_version,
981                 p_init_msg_list,
982                 l_return_status,
983                 x_msg_count,
984                 x_msg_data,
985                 p_srev_tbl(i));
986         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
987           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
988             x_return_status := l_return_status;
989             raise G_EXCEPTION_HALT_VALIDATION;
990           ELSE
991             x_return_status := l_return_status;
992           END IF;
993         END IF;
994         EXIT WHEN (i = p_srev_tbl.LAST);
995         i := p_srev_tbl.NEXT(i);
996       END LOOP;
997     END IF;
998   EXCEPTION
999     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1000       NULL;
1001     WHEN OTHERS THEN
1002       OKC_API.set_message(p_app_name      => g_app_name,
1003                           p_msg_name      => g_unexpected_error,
1004                           p_token1        => g_sqlcode_token,
1005                           p_token1_value  => sqlcode,
1006                           p_token2        => g_sqlerrm_token,
1007                           p_token2_value  => sqlerrm);
1008       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1009  END delete_subclass_roles;
1010 
1011  PROCEDURE lock_subclass_roles(
1012     p_api_version                  IN NUMBER,
1013     p_init_msg_list                IN VARCHAR2 ,
1014     x_return_status                OUT NOCOPY VARCHAR2,
1015     x_msg_count                    OUT NOCOPY NUMBER,
1016     x_msg_data                     OUT NOCOPY VARCHAR2,
1017     p_srev_rec                     IN srev_rec_type) IS
1018  BEGIN
1019     okc_subclass_pvt.lock_subclass_roles(
1020                 p_api_version,
1021                 p_init_msg_list,
1022                 x_return_status,
1023                 x_msg_count,
1024                 x_msg_data,
1025                 p_srev_rec);
1026  END lock_subclass_roles;
1027 
1028  PROCEDURE lock_subclass_roles(
1029     p_api_version                  IN NUMBER,
1030     p_init_msg_list                IN VARCHAR2 ,
1031     x_return_status                OUT NOCOPY VARCHAR2,
1032     x_msg_count                    OUT NOCOPY NUMBER,
1033     x_msg_data                     OUT NOCOPY VARCHAR2,
1034     p_srev_tbl                     IN  srev_tbl_type) IS
1035  BEGIN
1036     okc_subclass_pvt.lock_subclass_roles(
1037                 p_api_version,
1038                 p_init_msg_list,
1039                 x_return_status,
1040                 x_msg_count,
1041                 x_msg_data,
1042                 p_srev_tbl);
1043  END lock_subclass_roles;
1044 
1045  PROCEDURE validate_subclass_roles(
1046     p_api_version                  IN NUMBER,
1047     p_init_msg_list                IN VARCHAR2 ,
1048     x_return_status                OUT NOCOPY VARCHAR2,
1049     x_msg_count                    OUT NOCOPY NUMBER,
1050     x_msg_data                     OUT NOCOPY VARCHAR2,
1051     p_srev_rec                     IN srev_rec_type) IS
1052  BEGIN
1053     okc_subclass_pvt.validate_subclass_roles(
1054                 p_api_version,
1055                 p_init_msg_list,
1056                 x_return_status,
1057                 x_msg_count,
1058                 x_msg_data,
1059                 p_srev_rec);
1060  END validate_subclass_roles;
1061 
1062  PROCEDURE validate_subclass_roles(
1063     p_api_version                  IN NUMBER,
1064     p_init_msg_list                IN VARCHAR2 ,
1065     x_return_status                OUT NOCOPY VARCHAR2,
1066     x_msg_count                    OUT NOCOPY NUMBER,
1067     x_msg_data                     OUT NOCOPY VARCHAR2,
1068     p_srev_tbl                     IN  srev_tbl_type) IS
1069  BEGIN
1070     okc_subclass_pvt.validate_subclass_roles(
1071                 p_api_version,
1072                 p_init_msg_list,
1073                 x_return_status,
1074                 x_msg_count,
1075                 x_msg_data,
1076                 p_srev_tbl);
1077  END validate_subclass_roles;
1078 
1079  PROCEDURE create_subclass_rg_defs(
1080     p_api_version                  IN NUMBER,
1081     p_init_msg_list                IN VARCHAR2 ,
1082     x_return_status                OUT NOCOPY VARCHAR2,
1083     x_msg_count                    OUT NOCOPY NUMBER,
1084     x_msg_data                     OUT NOCOPY VARCHAR2,
1085     p_srdv_rec                     IN srdv_rec_type,
1086     x_srdv_rec                     OUT NOCOPY srdv_rec_type) IS
1087     l_api_name                     CONSTANT VARCHAR2(30) := 'create_subclass_rg_defs';
1088     l_return_status		   VARCHAR2(1);
1089     l_srdv_rec                     srdv_rec_type := p_srdv_rec;
1090   BEGIN
1091     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1092 					      p_init_msg_list,
1093 					      '_PUB',
1094                                               x_return_status);
1095     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1096       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1097     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1098       raise OKC_API.G_EXCEPTION_ERROR;
1099     END IF;
1100     -- Call user hook for BEFORE
1101     g_srdv_rec := l_srdv_rec;
1102     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1103     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1104       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1105     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1106       raise OKC_API.G_EXCEPTION_ERROR;
1107     END IF;
1108     l_srdv_rec := migrate_srdv(l_srdv_rec, g_srdv_rec);
1109 
1110     okc_subclass_pvt.create_subclass_rg_defs(
1111                 p_api_version,
1112                 p_init_msg_list,
1113                 x_return_status,
1114                 x_msg_count,
1115                 x_msg_data,
1116                 l_srdv_rec,
1117                 x_srdv_rec);
1118     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1119       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1120     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1121       raise OKC_API.G_EXCEPTION_ERROR;
1122     END IF;
1123 
1124     -- Call user hook for AFTER
1125     g_srdv_rec := x_srdv_rec;
1126     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1127     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1128       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1129     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1130       raise OKC_API.G_EXCEPTION_ERROR;
1131     END IF;
1132     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1133   EXCEPTION
1134     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1135       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1136       (l_api_name,
1137        G_PKG_NAME,
1138        'OKC_API.G_RET_STS_ERROR',
1139        x_msg_count,
1140        x_msg_data,
1141        '_PUB');
1142     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1143       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1144       (l_api_name,
1145        G_PKG_NAME,
1146        'OKC_API.G_RET_STS_UNEXP_ERROR',
1147        x_msg_count,
1148        x_msg_data,
1149        '_PUB');
1150     WHEN OTHERS THEN
1151       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1152       (l_api_name,
1153        G_PKG_NAME,
1154        'OTHERS',
1155        x_msg_count,
1156        x_msg_data,
1157        '_PUB');
1158  END create_subclass_rg_defs;
1159 
1160  PROCEDURE create_subclass_rg_defs(
1161     p_api_version                  IN NUMBER,
1162     p_init_msg_list                IN VARCHAR2 ,
1163     x_return_status                OUT NOCOPY VARCHAR2,
1164     x_msg_count                    OUT NOCOPY NUMBER,
1165     x_msg_data                     OUT NOCOPY VARCHAR2,
1166     p_srdv_tbl                     IN  srdv_tbl_type,
1167     x_srdv_tbl                     OUT NOCOPY srdv_tbl_type) IS
1168     i				   NUMBER := 0;
1169     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1170   BEGIN
1171     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1172     IF p_srdv_tbl.COUNT > 0 THEN
1173       i := p_srdv_tbl.FIRST;
1174       LOOP
1175         create_subclass_rg_defs(
1176                 p_api_version,
1177                 p_init_msg_list,
1178                 l_return_status,
1179                 x_msg_count,
1180                 x_msg_data,
1181                 p_srdv_tbl(i),
1182                 x_srdv_tbl(i));
1183         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1184           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1185             x_return_status := l_return_status;
1186             raise G_EXCEPTION_HALT_VALIDATION;
1187           ELSE
1188             x_return_status := l_return_status;
1189           END IF;
1190         END IF;
1191         EXIT WHEN (i = p_srdv_tbl.LAST);
1192         i := p_srdv_tbl.NEXT(i);
1193       END LOOP;
1194     END IF;
1195   EXCEPTION
1196     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1197       NULL;
1198     WHEN OTHERS THEN
1199       OKC_API.set_message(p_app_name      => g_app_name,
1200                           p_msg_name      => g_unexpected_error,
1201                           p_token1        => g_sqlcode_token,
1202                           p_token1_value  => sqlcode,
1203                           p_token2        => g_sqlerrm_token,
1204                           p_token2_value  => sqlerrm);
1205       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1206  END create_subclass_rg_defs;
1207 
1208  PROCEDURE update_subclass_rg_defs(
1209     p_api_version                  IN NUMBER,
1210     p_init_msg_list                IN VARCHAR2 ,
1211     x_return_status                OUT NOCOPY VARCHAR2,
1212     x_msg_count                    OUT NOCOPY NUMBER,
1213     x_msg_data                     OUT NOCOPY VARCHAR2,
1214     p_srdv_rec                     IN srdv_rec_type,
1215     x_srdv_rec                     OUT NOCOPY srdv_rec_type) IS
1216     l_api_name                     CONSTANT VARCHAR2(30) := 'update_subclass_rg_defs';
1217     l_return_status		   VARCHAR2(1);
1218     l_srdv_rec                     srdv_rec_type := p_srdv_rec;
1219   BEGIN
1220     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1221 					      p_init_msg_list,
1222 					      '_PUB',
1223                                               x_return_status);
1224     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1225       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1226     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1227       raise OKC_API.G_EXCEPTION_ERROR;
1228     END IF;
1229     -- Call user hook for BEFORE
1230     g_srdv_rec := l_srdv_rec;
1231     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1232     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1233       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1234     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1235       raise OKC_API.G_EXCEPTION_ERROR;
1236     END IF;
1237     l_srdv_rec := migrate_srdv(l_srdv_rec, g_srdv_rec);
1238 
1239     okc_subclass_pvt.update_subclass_rg_defs(
1240                 p_api_version,
1241                 p_init_msg_list,
1242                 x_return_status,
1243                 x_msg_count,
1244                 x_msg_data,
1245                 l_srdv_rec,
1246                 x_srdv_rec);
1247     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1248       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1249     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1250       raise OKC_API.G_EXCEPTION_ERROR;
1251     END IF;
1252 
1253     -- Call user hook for AFTER
1254     g_srdv_rec := x_srdv_rec;
1255     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1256     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1257       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1258     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1259       raise OKC_API.G_EXCEPTION_ERROR;
1260     END IF;
1261     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1262   EXCEPTION
1263     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1264       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1265       (l_api_name,
1266        G_PKG_NAME,
1267        'OKC_API.G_RET_STS_ERROR',
1268        x_msg_count,
1269        x_msg_data,
1270        '_PUB');
1271     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1272       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1273       (l_api_name,
1274        G_PKG_NAME,
1275        'OKC_API.G_RET_STS_UNEXP_ERROR',
1276        x_msg_count,
1277        x_msg_data,
1278        '_PUB');
1279     WHEN OTHERS THEN
1280       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1281       (l_api_name,
1282        G_PKG_NAME,
1283        'OTHERS',
1284        x_msg_count,
1285        x_msg_data,
1286        '_PUB');
1287  END update_subclass_rg_defs;
1288 
1289  PROCEDURE update_subclass_rg_defs(
1290     p_api_version                  IN NUMBER,
1291     p_init_msg_list                IN VARCHAR2 ,
1292     x_return_status                OUT NOCOPY VARCHAR2,
1293     x_msg_count                    OUT NOCOPY NUMBER,
1294     x_msg_data                     OUT NOCOPY VARCHAR2,
1295     p_srdv_tbl                     IN  srdv_tbl_type,
1296     x_srdv_tbl                     OUT NOCOPY srdv_tbl_type) IS
1297     i				   NUMBER := 0;
1298     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1299   BEGIN
1300     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1301     IF p_srdv_tbl.COUNT > 0 THEN
1302       i := p_srdv_tbl.FIRST;
1303       LOOP
1304         update_subclass_rg_defs(
1305                 p_api_version,
1306                 p_init_msg_list,
1307                 l_return_status,
1308                 x_msg_count,
1309                 x_msg_data,
1310                 p_srdv_tbl(i),
1311                 x_srdv_tbl(i));
1312         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1313           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1314             x_return_status := l_return_status;
1315             raise G_EXCEPTION_HALT_VALIDATION;
1316           ELSE
1317             x_return_status := l_return_status;
1318           END IF;
1319         END IF;
1320         EXIT WHEN (i = p_srdv_tbl.LAST);
1321         i := p_srdv_tbl.NEXT(i);
1322       END LOOP;
1323     END IF;
1324   EXCEPTION
1325     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1326       NULL;
1327     WHEN OTHERS THEN
1328       OKC_API.set_message(p_app_name      => g_app_name,
1329                           p_msg_name      => g_unexpected_error,
1330                           p_token1        => g_sqlcode_token,
1331                           p_token1_value  => sqlcode,
1332                           p_token2        => g_sqlerrm_token,
1333                           p_token2_value  => sqlerrm);
1334       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1335  END update_subclass_rg_defs;
1336 
1337  PROCEDURE delete_subclass_rg_defs(
1338     p_api_version                  IN NUMBER,
1339     p_init_msg_list                IN VARCHAR2 ,
1340     x_return_status                OUT NOCOPY VARCHAR2,
1341     x_msg_count                    OUT NOCOPY NUMBER,
1342     x_msg_data                     OUT NOCOPY VARCHAR2,
1343     p_srdv_rec                     IN srdv_rec_type) IS
1344     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_subclass_rg_defs';
1345     l_return_status		   VARCHAR2(1);
1346     l_srdv_rec                     srdv_rec_type := p_srdv_rec;
1347   BEGIN
1348     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1349 					      p_init_msg_list,
1350 					      '_PUB',
1351                                               x_return_status);
1352     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1353       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1354     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1355       raise OKC_API.G_EXCEPTION_ERROR;
1356     END IF;
1357     -- Call user hook for BEFORE
1358     g_srdv_rec := l_srdv_rec;
1359     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1360     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1361       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1362     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1363       raise OKC_API.G_EXCEPTION_ERROR;
1364     END IF;
1365 
1366     okc_subclass_pvt.delete_subclass_rg_defs(
1367                 p_api_version,
1368                 p_init_msg_list,
1369                 x_return_status,
1370                 x_msg_count,
1371                 x_msg_data,
1372                 p_srdv_rec);
1373     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1374       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1375     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1376       raise OKC_API.G_EXCEPTION_ERROR;
1377     END IF;
1378 
1379     -- Call user hook for AFTER
1380     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1381     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1382       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1383     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1384       raise OKC_API.G_EXCEPTION_ERROR;
1385     END IF;
1386     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1387   EXCEPTION
1388     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1389       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1390       (l_api_name,
1391        G_PKG_NAME,
1392        'OKC_API.G_RET_STS_ERROR',
1393        x_msg_count,
1394        x_msg_data,
1395        '_PUB');
1396     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1397       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1398       (l_api_name,
1399        G_PKG_NAME,
1400        'OKC_API.G_RET_STS_UNEXP_ERROR',
1401        x_msg_count,
1402        x_msg_data,
1403        '_PUB');
1404     WHEN OTHERS THEN
1405       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1406       (l_api_name,
1407        G_PKG_NAME,
1408        'OTHERS',
1409        x_msg_count,
1410        x_msg_data,
1411        '_PUB');
1412  END delete_subclass_rg_defs;
1413 
1414  PROCEDURE delete_subclass_rg_defs(
1415     p_api_version                  IN NUMBER,
1416     p_init_msg_list                IN VARCHAR2 ,
1417     x_return_status                OUT NOCOPY VARCHAR2,
1418     x_msg_count                    OUT NOCOPY NUMBER,
1419     x_msg_data                     OUT NOCOPY VARCHAR2,
1420     p_srdv_tbl                     IN  srdv_tbl_type) IS
1421     i				   NUMBER := 0;
1422     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1423   BEGIN
1424     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1425     IF p_srdv_tbl.COUNT > 0 THEN
1426       i := p_srdv_tbl.FIRST;
1427       LOOP
1428         delete_subclass_rg_defs(
1429                 p_api_version,
1430                 p_init_msg_list,
1431                 l_return_status,
1432                 x_msg_count,
1433                 x_msg_data,
1434                 p_srdv_tbl(i));
1435         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1436           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1437             x_return_status := l_return_status;
1438             raise G_EXCEPTION_HALT_VALIDATION;
1439           ELSE
1440             x_return_status := l_return_status;
1441           END IF;
1442         END IF;
1443         EXIT WHEN (i = p_srdv_tbl.LAST);
1444         i := p_srdv_tbl.NEXT(i);
1445       END LOOP;
1446     END IF;
1447   EXCEPTION
1448     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1449       NULL;
1450     WHEN OTHERS THEN
1451       OKC_API.set_message(p_app_name      => g_app_name,
1452                           p_msg_name      => g_unexpected_error,
1453                           p_token1        => g_sqlcode_token,
1454                           p_token1_value  => sqlcode,
1455                           p_token2        => g_sqlerrm_token,
1456                           p_token2_value  => sqlerrm);
1457       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1458  END delete_subclass_rg_defs;
1459 
1460  PROCEDURE lock_subclass_rg_defs(
1461     p_api_version                  IN NUMBER,
1462     p_init_msg_list                IN VARCHAR2 ,
1463     x_return_status                OUT NOCOPY VARCHAR2,
1464     x_msg_count                    OUT NOCOPY NUMBER,
1465     x_msg_data                     OUT NOCOPY VARCHAR2,
1466     p_srdv_rec                     IN srdv_rec_type) IS
1467  BEGIN
1468     okc_subclass_pvt.lock_subclass_rg_defs(
1469                 p_api_version,
1470                 p_init_msg_list,
1471                 x_return_status,
1472                 x_msg_count,
1473                 x_msg_data,
1474                 p_srdv_rec);
1475  END lock_subclass_rg_defs;
1476 
1477  PROCEDURE lock_subclass_rg_defs(
1478     p_api_version                  IN NUMBER,
1479     p_init_msg_list                IN VARCHAR2 ,
1480     x_return_status                OUT NOCOPY VARCHAR2,
1481     x_msg_count                    OUT NOCOPY NUMBER,
1482     x_msg_data                     OUT NOCOPY VARCHAR2,
1483     p_srdv_tbl                     IN  srdv_tbl_type) IS
1484  BEGIN
1485     okc_subclass_pvt.lock_subclass_rg_defs(
1486                 p_api_version,
1487                 p_init_msg_list,
1488                 x_return_status,
1489                 x_msg_count,
1490                 x_msg_data,
1491                 p_srdv_tbl);
1492  END lock_subclass_rg_defs;
1493 
1494  PROCEDURE validate_subclass_rg_defs(
1495     p_api_version                  IN NUMBER,
1496     p_init_msg_list                IN VARCHAR2 ,
1497     x_return_status                OUT NOCOPY VARCHAR2,
1498     x_msg_count                    OUT NOCOPY NUMBER,
1499     x_msg_data                     OUT NOCOPY VARCHAR2,
1500     p_srdv_rec                     IN srdv_rec_type) IS
1501  BEGIN
1502     okc_subclass_pvt.validate_subclass_rg_defs(
1503                 p_api_version,
1504                 p_init_msg_list,
1505                 x_return_status,
1506                 x_msg_count,
1507                 x_msg_data,
1508                 p_srdv_rec);
1509  END validate_subclass_rg_defs;
1510 
1511  PROCEDURE validate_subclass_rg_defs(
1512     p_api_version                  IN NUMBER,
1513     p_init_msg_list                IN VARCHAR2 ,
1514     x_return_status                OUT NOCOPY VARCHAR2,
1515     x_msg_count                    OUT NOCOPY NUMBER,
1516     x_msg_data                     OUT NOCOPY VARCHAR2,
1517     p_srdv_tbl                     IN  srdv_tbl_type) IS
1518  BEGIN
1519     okc_subclass_pvt.validate_subclass_rg_defs(
1520                 p_api_version,
1521                 p_init_msg_list,
1522                 x_return_status,
1523                 x_msg_count,
1524                 x_msg_data,
1525                 p_srdv_tbl);
1526  END validate_subclass_rg_defs;
1527 
1528  PROCEDURE create_rg_role_defs(
1529     p_api_version                  IN NUMBER,
1530     p_init_msg_list                IN VARCHAR2 ,
1531     x_return_status                OUT NOCOPY VARCHAR2,
1532     x_msg_count                    OUT NOCOPY NUMBER,
1533     x_msg_data                     OUT NOCOPY VARCHAR2,
1534     p_rrdv_rec                     IN rrdv_rec_type,
1535     x_rrdv_rec                     OUT NOCOPY rrdv_rec_type) IS
1536     l_api_name                     CONSTANT VARCHAR2(30) := 'create_rg_role_defs';
1537     l_return_status		   VARCHAR2(1);
1538     l_rrdv_rec                     rrdv_rec_type := p_rrdv_rec;
1539   BEGIN
1540     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1541 					      p_init_msg_list,
1542 					      '_PUB',
1543                                               x_return_status);
1544     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1545       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1546     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1547       raise OKC_API.G_EXCEPTION_ERROR;
1548     END IF;
1549     -- Call user hook for BEFORE
1550     g_rrdv_rec := l_rrdv_rec;
1551     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1552     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1553       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1554     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1555       raise OKC_API.G_EXCEPTION_ERROR;
1556     END IF;
1557     l_rrdv_rec := migrate_rrdv(l_rrdv_rec, g_rrdv_rec);
1558 
1559     okc_subclass_pvt.create_rg_role_defs(
1560                 p_api_version,
1561                 p_init_msg_list,
1562                 x_return_status,
1563                 x_msg_count,
1564                 x_msg_data,
1565                 l_rrdv_rec,
1566                 x_rrdv_rec);
1567     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1568       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1569     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1570       raise OKC_API.G_EXCEPTION_ERROR;
1571     END IF;
1572 
1573     -- Call user hook for AFTER
1574     g_rrdv_rec := x_rrdv_rec;
1575     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1576     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1577       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1578     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1579       raise OKC_API.G_EXCEPTION_ERROR;
1580     END IF;
1581     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1582   EXCEPTION
1583     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1584       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1585       (l_api_name,
1586        G_PKG_NAME,
1587        'OKC_API.G_RET_STS_ERROR',
1588        x_msg_count,
1589        x_msg_data,
1590        '_PUB');
1591     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1592       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1593       (l_api_name,
1594        G_PKG_NAME,
1595        'OKC_API.G_RET_STS_UNEXP_ERROR',
1596        x_msg_count,
1597        x_msg_data,
1598        '_PUB');
1599     WHEN OTHERS THEN
1600       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1601       (l_api_name,
1602        G_PKG_NAME,
1603        'OTHERS',
1604        x_msg_count,
1605        x_msg_data,
1606        '_PUB');
1607  END create_rg_role_defs;
1608 
1609  PROCEDURE create_rg_role_defs(
1610     p_api_version                  IN NUMBER,
1611     p_init_msg_list                IN VARCHAR2 ,
1612     x_return_status                OUT NOCOPY VARCHAR2,
1613     x_msg_count                    OUT NOCOPY NUMBER,
1614     x_msg_data                     OUT NOCOPY VARCHAR2,
1615     p_rrdv_tbl                     IN  rrdv_tbl_type,
1616     x_rrdv_tbl                     OUT NOCOPY rrdv_tbl_type) IS
1617     i				   NUMBER := 0;
1618     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1619   BEGIN
1620     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1621     IF p_rrdv_tbl.COUNT > 0 THEN
1622       i := p_rrdv_tbl.FIRST;
1623       LOOP
1624         create_rg_role_defs(
1625                 p_api_version,
1626                 p_init_msg_list,
1627                 l_return_status,
1628                 x_msg_count,
1629                 x_msg_data,
1630                 p_rrdv_tbl(i),
1631                 x_rrdv_tbl(i));
1632         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1633           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1634             x_return_status := l_return_status;
1635             raise G_EXCEPTION_HALT_VALIDATION;
1636           ELSE
1637             x_return_status := l_return_status;
1638           END IF;
1639         END IF;
1640         EXIT WHEN (i = p_rrdv_tbl.LAST);
1641         i := p_rrdv_tbl.NEXT(i);
1642       END LOOP;
1643     END IF;
1644   EXCEPTION
1645     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1646       NULL;
1647     WHEN OTHERS THEN
1648       OKC_API.set_message(p_app_name      => g_app_name,
1649                           p_msg_name      => g_unexpected_error,
1650                           p_token1        => g_sqlcode_token,
1651                           p_token1_value  => sqlcode,
1652                           p_token2        => g_sqlerrm_token,
1653                           p_token2_value  => sqlerrm);
1654       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1655  END create_rg_role_defs;
1656 
1657  PROCEDURE update_rg_role_defs(
1658     p_api_version                  IN NUMBER,
1659     p_init_msg_list                IN VARCHAR2 ,
1660     x_return_status                OUT NOCOPY VARCHAR2,
1661     x_msg_count                    OUT NOCOPY NUMBER,
1662     x_msg_data                     OUT NOCOPY VARCHAR2,
1663     p_rrdv_rec                     IN rrdv_rec_type,
1664     x_rrdv_rec                     OUT NOCOPY rrdv_rec_type) IS
1665     l_api_name                     CONSTANT VARCHAR2(30) := 'update_rg_role_defs';
1666     l_return_status		   VARCHAR2(1);
1667     l_rrdv_rec                     rrdv_rec_type := p_rrdv_rec;
1668   BEGIN
1669     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1670 					      p_init_msg_list,
1671 					      '_PUB',
1672                                               x_return_status);
1673     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1674       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1675     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1676       raise OKC_API.G_EXCEPTION_ERROR;
1677     END IF;
1678     -- Call user hook for BEFORE
1679     g_rrdv_rec := l_rrdv_rec;
1680     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1681     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1682       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1683     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1684       raise OKC_API.G_EXCEPTION_ERROR;
1685     END IF;
1686     l_rrdv_rec := migrate_rrdv(l_rrdv_rec, g_rrdv_rec);
1687 
1688     okc_subclass_pvt.update_rg_role_defs(
1689                 p_api_version,
1690                 p_init_msg_list,
1691                 x_return_status,
1692                 x_msg_count,
1693                 x_msg_data,
1694                 l_rrdv_rec,
1695                 x_rrdv_rec);
1696     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1697       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1698     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1699       raise OKC_API.G_EXCEPTION_ERROR;
1700     END IF;
1701 
1702     -- Call user hook for AFTER
1703     g_rrdv_rec := x_rrdv_rec;
1704     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1705     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1706       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1707     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1708       raise OKC_API.G_EXCEPTION_ERROR;
1709     END IF;
1710     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1711   EXCEPTION
1712     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1713       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1714       (l_api_name,
1715        G_PKG_NAME,
1716        'OKC_API.G_RET_STS_ERROR',
1717        x_msg_count,
1718        x_msg_data,
1719        '_PUB');
1720     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1721       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1722       (l_api_name,
1723        G_PKG_NAME,
1724        'OKC_API.G_RET_STS_UNEXP_ERROR',
1725        x_msg_count,
1726        x_msg_data,
1727        '_PUB');
1728     WHEN OTHERS THEN
1729       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1730       (l_api_name,
1731        G_PKG_NAME,
1732        'OTHERS',
1733        x_msg_count,
1734        x_msg_data,
1735        '_PUB');
1736  END update_rg_role_defs;
1737 
1738  PROCEDURE update_rg_role_defs(
1739     p_api_version                  IN NUMBER,
1740     p_init_msg_list                IN VARCHAR2 ,
1741     x_return_status                OUT NOCOPY VARCHAR2,
1742     x_msg_count                    OUT NOCOPY NUMBER,
1743     x_msg_data                     OUT NOCOPY VARCHAR2,
1744     p_rrdv_tbl                     IN  rrdv_tbl_type,
1745     x_rrdv_tbl                     OUT NOCOPY rrdv_tbl_type) IS
1746     i				   NUMBER := 0;
1747     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1748   BEGIN
1749     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1750     IF p_rrdv_tbl.COUNT > 0 THEN
1751       i := p_rrdv_tbl.FIRST;
1752       LOOP
1753         update_rg_role_defs(
1754                 p_api_version,
1755                 p_init_msg_list,
1756                 l_return_status,
1757                 x_msg_count,
1758                 x_msg_data,
1759                 p_rrdv_tbl(i),
1760                 x_rrdv_tbl(i));
1761         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1762           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1763             x_return_status := l_return_status;
1764             raise G_EXCEPTION_HALT_VALIDATION;
1765           ELSE
1766             x_return_status := l_return_status;
1767           END IF;
1768         END IF;
1769         EXIT WHEN (i = p_rrdv_tbl.LAST);
1770         i := p_rrdv_tbl.NEXT(i);
1771       END LOOP;
1772     END IF;
1773   EXCEPTION
1774     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1775       NULL;
1776     WHEN OTHERS THEN
1777       OKC_API.set_message(p_app_name      => g_app_name,
1778                           p_msg_name      => g_unexpected_error,
1779                           p_token1        => g_sqlcode_token,
1780                           p_token1_value  => sqlcode,
1781                           p_token2        => g_sqlerrm_token,
1782                           p_token2_value  => sqlerrm);
1783       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1784  END update_rg_role_defs;
1785 
1786  PROCEDURE delete_rg_role_defs(
1787     p_api_version                  IN NUMBER,
1788     p_init_msg_list                IN VARCHAR2 ,
1789     x_return_status                OUT NOCOPY VARCHAR2,
1790     x_msg_count                    OUT NOCOPY NUMBER,
1791     x_msg_data                     OUT NOCOPY VARCHAR2,
1792     p_rrdv_rec                     IN rrdv_rec_type) IS
1793     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_rg_role_defs';
1794     l_return_status		   VARCHAR2(1);
1795     l_rrdv_rec                     rrdv_rec_type := p_rrdv_rec;
1796   BEGIN
1797     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1798 					      p_init_msg_list,
1799 					      '_PUB',
1800                                               x_return_status);
1801     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1802       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1803     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1804       raise OKC_API.G_EXCEPTION_ERROR;
1805     END IF;
1806     -- Call user hook for BEFORE
1807     g_rrdv_rec := l_rrdv_rec;
1808     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1809     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1810       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1811     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1812       raise OKC_API.G_EXCEPTION_ERROR;
1813     END IF;
1814 
1815     okc_subclass_pvt.delete_rg_role_defs(
1816                 p_api_version,
1817                 p_init_msg_list,
1818                 x_return_status,
1819                 x_msg_count,
1820                 x_msg_data,
1821                 p_rrdv_rec);
1822     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1823       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1824     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1825       raise OKC_API.G_EXCEPTION_ERROR;
1826     END IF;
1827 
1828     -- Call user hook for AFTER
1829     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1830     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1831       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1832     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1833       raise OKC_API.G_EXCEPTION_ERROR;
1834     END IF;
1835     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1836   EXCEPTION
1837     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1838       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1839       (l_api_name,
1840        G_PKG_NAME,
1841        'OKC_API.G_RET_STS_ERROR',
1842        x_msg_count,
1843        x_msg_data,
1844        '_PUB');
1845     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1846       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1847       (l_api_name,
1848        G_PKG_NAME,
1849        'OKC_API.G_RET_STS_UNEXP_ERROR',
1850        x_msg_count,
1851        x_msg_data,
1852        '_PUB');
1853     WHEN OTHERS THEN
1854       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1855       (l_api_name,
1856        G_PKG_NAME,
1857        'OTHERS',
1858        x_msg_count,
1859        x_msg_data,
1860        '_PUB');
1861  END delete_rg_role_defs;
1862 
1863  PROCEDURE delete_rg_role_defs(
1864     p_api_version                  IN NUMBER,
1865     p_init_msg_list                IN VARCHAR2 ,
1866     x_return_status                OUT NOCOPY VARCHAR2,
1867     x_msg_count                    OUT NOCOPY NUMBER,
1868     x_msg_data                     OUT NOCOPY VARCHAR2,
1869     p_rrdv_tbl                     IN  rrdv_tbl_type) IS
1870     i				   NUMBER := 0;
1871     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1872   BEGIN
1873     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1874     IF p_rrdv_tbl.COUNT > 0 THEN
1875       i := p_rrdv_tbl.FIRST;
1876       LOOP
1877         delete_rg_role_defs(
1878                 p_api_version,
1879                 p_init_msg_list,
1880                 l_return_status,
1881                 x_msg_count,
1882                 x_msg_data,
1883                 p_rrdv_tbl(i));
1884         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1885           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1886             x_return_status := l_return_status;
1887             raise G_EXCEPTION_HALT_VALIDATION;
1888           ELSE
1889             x_return_status := l_return_status;
1890           END IF;
1891         END IF;
1892         EXIT WHEN (i = p_rrdv_tbl.LAST);
1893         i := p_rrdv_tbl.NEXT(i);
1894       END LOOP;
1895     END IF;
1896   EXCEPTION
1897     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1898       NULL;
1899     WHEN OTHERS THEN
1900       OKC_API.set_message(p_app_name      => g_app_name,
1901                           p_msg_name      => g_unexpected_error,
1902                           p_token1        => g_sqlcode_token,
1903                           p_token1_value  => sqlcode,
1904                           p_token2        => g_sqlerrm_token,
1905                           p_token2_value  => sqlerrm);
1906       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1907  END delete_rg_role_defs;
1908 
1909  PROCEDURE lock_rg_role_defs(
1910     p_api_version                  IN NUMBER,
1911     p_init_msg_list                IN VARCHAR2 ,
1912     x_return_status                OUT NOCOPY VARCHAR2,
1913     x_msg_count                    OUT NOCOPY NUMBER,
1914     x_msg_data                     OUT NOCOPY VARCHAR2,
1915     p_rrdv_rec                     IN rrdv_rec_type) IS
1916  BEGIN
1917     okc_subclass_pvt.lock_rg_role_defs(
1918                 p_api_version,
1919                 p_init_msg_list,
1920                 x_return_status,
1921                 x_msg_count,
1922                 x_msg_data,
1923                 p_rrdv_rec);
1924  END lock_rg_role_defs;
1925 
1926  PROCEDURE lock_rg_role_defs(
1927     p_api_version                  IN NUMBER,
1928     p_init_msg_list                IN VARCHAR2 ,
1929     x_return_status                OUT NOCOPY VARCHAR2,
1930     x_msg_count                    OUT NOCOPY NUMBER,
1931     x_msg_data                     OUT NOCOPY VARCHAR2,
1932     p_rrdv_tbl                     IN  rrdv_tbl_type) IS
1933  BEGIN
1934     okc_subclass_pvt.lock_rg_role_defs(
1935                 p_api_version,
1936                 p_init_msg_list,
1937                 x_return_status,
1938                 x_msg_count,
1939                 x_msg_data,
1940                 p_rrdv_tbl);
1941  END lock_rg_role_defs;
1942 
1943  PROCEDURE validate_rg_role_defs(
1944     p_api_version                  IN NUMBER,
1945     p_init_msg_list                IN VARCHAR2 ,
1946     x_return_status                OUT NOCOPY VARCHAR2,
1947     x_msg_count                    OUT NOCOPY NUMBER,
1948     x_msg_data                     OUT NOCOPY VARCHAR2,
1949     p_rrdv_rec                     IN rrdv_rec_type) IS
1950  BEGIN
1951     okc_subclass_pvt.validate_rg_role_defs(
1952                 p_api_version,
1953                 p_init_msg_list,
1954                 x_return_status,
1955                 x_msg_count,
1956                 x_msg_data,
1957                 p_rrdv_rec);
1958  END validate_rg_role_defs;
1959 
1960  PROCEDURE validate_rg_role_defs(
1961     p_api_version                  IN NUMBER,
1962     p_init_msg_list                IN VARCHAR2 ,
1963     x_return_status                OUT NOCOPY VARCHAR2,
1964     x_msg_count                    OUT NOCOPY NUMBER,
1965     x_msg_data                     OUT NOCOPY VARCHAR2,
1966     p_rrdv_tbl                     IN  rrdv_tbl_type) IS
1967  BEGIN
1968     okc_subclass_pvt.validate_rg_role_defs(
1969                 p_api_version,
1970                 p_init_msg_list,
1971                 x_return_status,
1972                 x_msg_count,
1973                 x_msg_data,
1974                 p_rrdv_tbl);
1975  END validate_rg_role_defs;
1976 
1977  PROCEDURE create_subclass_top_line(
1978     p_api_version                  IN NUMBER,
1979     p_init_msg_list                IN VARCHAR2 ,
1980     x_return_status                OUT NOCOPY VARCHAR2,
1981     x_msg_count                    OUT NOCOPY NUMBER,
1982     x_msg_data                     OUT NOCOPY VARCHAR2,
1983     p_stlv_rec                     IN stlv_rec_type,
1984     x_stlv_rec                     OUT NOCOPY stlv_rec_type) IS
1985     l_api_name                     CONSTANT VARCHAR2(30) := 'create_subclass_top_line';
1986     l_return_status		   VARCHAR2(1);
1987     l_stlv_rec                     stlv_rec_type := p_stlv_rec;
1988   BEGIN
1989     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1990 					      p_init_msg_list,
1991 					      '_PUB',
1992                                               x_return_status);
1993     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1994       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1995     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1996       raise OKC_API.G_EXCEPTION_ERROR;
1997     END IF;
1998     -- Call user hook for BEFORE
1999     g_stlv_rec := l_stlv_rec;
2000     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2001     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2002       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2003     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2004       raise OKC_API.G_EXCEPTION_ERROR;
2005     END IF;
2006     l_stlv_rec := migrate_stlv(l_stlv_rec, g_stlv_rec);
2007 
2008     okc_subclass_pvt.create_subclass_top_line(
2009                 p_api_version,
2010                 p_init_msg_list,
2011                 x_return_status,
2012                 x_msg_count,
2013                 x_msg_data,
2014                 l_stlv_rec,
2015                 x_stlv_rec);
2016     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2017       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2018     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2019       raise OKC_API.G_EXCEPTION_ERROR;
2020     END IF;
2021 
2022     -- Call user hook for AFTER
2023     g_stlv_rec := x_stlv_rec;
2024     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2025     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2026       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2027     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2028       raise OKC_API.G_EXCEPTION_ERROR;
2029     END IF;
2030     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2031   EXCEPTION
2032     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2033       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2034       (l_api_name,
2035        G_PKG_NAME,
2036        'OKC_API.G_RET_STS_ERROR',
2037        x_msg_count,
2038        x_msg_data,
2039        '_PUB');
2040     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2041       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2042       (l_api_name,
2043        G_PKG_NAME,
2044        'OKC_API.G_RET_STS_UNEXP_ERROR',
2045        x_msg_count,
2046        x_msg_data,
2047        '_PUB');
2048     WHEN OTHERS THEN
2049       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2050       (l_api_name,
2051        G_PKG_NAME,
2052        'OTHERS',
2053        x_msg_count,
2054        x_msg_data,
2055        '_PUB');
2056  END create_subclass_top_line;
2057 
2058  PROCEDURE create_subclass_top_line(
2059     p_api_version                  IN NUMBER,
2060     p_init_msg_list                IN VARCHAR2 ,
2061     x_return_status                OUT NOCOPY VARCHAR2,
2062     x_msg_count                    OUT NOCOPY NUMBER,
2063     x_msg_data                     OUT NOCOPY VARCHAR2,
2064     p_stlv_tbl                     IN  stlv_tbl_type,
2065     x_stlv_tbl                     OUT NOCOPY stlv_tbl_type) IS
2066     i				   NUMBER := 0;
2067     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2068   BEGIN
2069     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2070     IF p_stlv_tbl.COUNT > 0 THEN
2071       i := p_stlv_tbl.FIRST;
2072       LOOP
2073         create_subclass_top_line(
2074                 p_api_version,
2075                 p_init_msg_list,
2076                 l_return_status,
2077                 x_msg_count,
2078                 x_msg_data,
2079                 p_stlv_tbl(i),
2080                 x_stlv_tbl(i));
2081         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2082           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2083             x_return_status := l_return_status;
2084             raise G_EXCEPTION_HALT_VALIDATION;
2085           ELSE
2086             x_return_status := l_return_status;
2087           END IF;
2088         END IF;
2089         EXIT WHEN (i = p_stlv_tbl.LAST);
2090         i := p_stlv_tbl.NEXT(i);
2091       END LOOP;
2092     END IF;
2093   EXCEPTION
2094     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2095       NULL;
2096     WHEN OTHERS THEN
2097       OKC_API.set_message(p_app_name      => g_app_name,
2098                           p_msg_name      => g_unexpected_error,
2099                           p_token1        => g_sqlcode_token,
2100                           p_token1_value  => sqlcode,
2101                           p_token2        => g_sqlerrm_token,
2102                           p_token2_value  => sqlerrm);
2103       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2104  END create_subclass_top_line;
2105 
2106  PROCEDURE update_subclass_top_line(
2107     p_api_version                  IN NUMBER,
2108     p_init_msg_list                IN VARCHAR2 ,
2109     x_return_status                OUT NOCOPY VARCHAR2,
2110     x_msg_count                    OUT NOCOPY NUMBER,
2111     x_msg_data                     OUT NOCOPY VARCHAR2,
2112     p_stlv_rec                     IN stlv_rec_type,
2113     x_stlv_rec                     OUT NOCOPY stlv_rec_type) IS
2114     l_api_name                     CONSTANT VARCHAR2(30) := 'update_subclass_top_line';
2115     l_return_status		   VARCHAR2(1);
2116     l_stlv_rec                     stlv_rec_type := p_stlv_rec;
2117   BEGIN
2118     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2119 					      p_init_msg_list,
2120 					      '_PUB',
2121                                               x_return_status);
2122     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2123       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2124     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2125       raise OKC_API.G_EXCEPTION_ERROR;
2126     END IF;
2127     -- Call user hook for BEFORE
2128     g_stlv_rec := l_stlv_rec;
2129     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2130     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2131       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2132     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2133       raise OKC_API.G_EXCEPTION_ERROR;
2134     END IF;
2135     l_stlv_rec := migrate_stlv(l_stlv_rec, g_stlv_rec);
2136 
2137     okc_subclass_pvt.update_subclass_top_line(
2138                 p_api_version,
2139                 p_init_msg_list,
2140                 x_return_status,
2141                 x_msg_count,
2142                 x_msg_data,
2143                 l_stlv_rec,
2144                 x_stlv_rec);
2145     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2146       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2147     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2148       raise OKC_API.G_EXCEPTION_ERROR;
2149     END IF;
2150 
2151     -- Call user hook for AFTER
2152     g_stlv_rec := x_stlv_rec;
2153     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2154     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2155       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2156     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2157       raise OKC_API.G_EXCEPTION_ERROR;
2158     END IF;
2159     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2160   EXCEPTION
2161     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2162       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2163       (l_api_name,
2164        G_PKG_NAME,
2165        'OKC_API.G_RET_STS_ERROR',
2166        x_msg_count,
2167        x_msg_data,
2168        '_PUB');
2169     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2170       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2171       (l_api_name,
2172        G_PKG_NAME,
2173        'OKC_API.G_RET_STS_UNEXP_ERROR',
2174        x_msg_count,
2175        x_msg_data,
2176        '_PUB');
2177     WHEN OTHERS THEN
2178       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2179       (l_api_name,
2180        G_PKG_NAME,
2181        'OTHERS',
2182        x_msg_count,
2183        x_msg_data,
2184        '_PUB');
2185  END update_subclass_top_line;
2186 
2187  PROCEDURE update_subclass_top_line(
2188     p_api_version                  IN NUMBER,
2189     p_init_msg_list                IN VARCHAR2 ,
2190     x_return_status                OUT NOCOPY VARCHAR2,
2191     x_msg_count                    OUT NOCOPY NUMBER,
2192     x_msg_data                     OUT NOCOPY VARCHAR2,
2193     p_stlv_tbl                     IN  stlv_tbl_type,
2194     x_stlv_tbl                     OUT NOCOPY stlv_tbl_type) IS
2195     i				   NUMBER := 0;
2196     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2197   BEGIN
2198     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2199     IF p_stlv_tbl.COUNT > 0 THEN
2200       i := p_stlv_tbl.FIRST;
2201       LOOP
2202         update_subclass_top_line(
2203                 p_api_version,
2204                 p_init_msg_list,
2205                 l_return_status,
2206                 x_msg_count,
2207                 x_msg_data,
2208                 p_stlv_tbl(i),
2209                 x_stlv_tbl(i));
2210         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2211           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2212             x_return_status := l_return_status;
2213             raise G_EXCEPTION_HALT_VALIDATION;
2214           ELSE
2215             x_return_status := l_return_status;
2216           END IF;
2217         END IF;
2218         EXIT WHEN (i = p_stlv_tbl.LAST);
2219         i := p_stlv_tbl.NEXT(i);
2220       END LOOP;
2221     END IF;
2222   EXCEPTION
2223     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2224       NULL;
2225     WHEN OTHERS THEN
2226       OKC_API.set_message(p_app_name      => g_app_name,
2227                           p_msg_name      => g_unexpected_error,
2228                           p_token1        => g_sqlcode_token,
2229                           p_token1_value  => sqlcode,
2230                           p_token2        => g_sqlerrm_token,
2231                           p_token2_value  => sqlerrm);
2232       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2233  END update_subclass_top_line;
2234 
2235  PROCEDURE delete_subclass_top_line(
2236     p_api_version                  IN NUMBER,
2237     p_init_msg_list                IN VARCHAR2 ,
2238     x_return_status                OUT NOCOPY VARCHAR2,
2239     x_msg_count                    OUT NOCOPY NUMBER,
2240     x_msg_data                     OUT NOCOPY VARCHAR2,
2241     p_stlv_rec                     IN stlv_rec_type) IS
2242     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_subclass_top_line';
2243     l_return_status		   VARCHAR2(1);
2244     l_stlv_rec                     stlv_rec_type := p_stlv_rec;
2245   BEGIN
2246     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2247 					      p_init_msg_list,
2248 					      '_PUB',
2249                                               x_return_status);
2250     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2251       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2252     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2253       raise OKC_API.G_EXCEPTION_ERROR;
2254     END IF;
2255     -- Call user hook for BEFORE
2256     g_stlv_rec := l_stlv_rec;
2257     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2258     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2259       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2260     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2261       raise OKC_API.G_EXCEPTION_ERROR;
2262     END IF;
2263 
2264     okc_subclass_pvt.delete_subclass_top_line(
2265                 p_api_version,
2266                 p_init_msg_list,
2267                 x_return_status,
2268                 x_msg_count,
2269                 x_msg_data,
2270                 p_stlv_rec);
2271     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2272       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2273     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2274       raise OKC_API.G_EXCEPTION_ERROR;
2275     END IF;
2276 
2277     -- Call user hook for AFTER
2278     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2279     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2280       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2281     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2282       raise OKC_API.G_EXCEPTION_ERROR;
2283     END IF;
2284     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2285   EXCEPTION
2286     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2287       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2288       (l_api_name,
2289        G_PKG_NAME,
2290        'OKC_API.G_RET_STS_ERROR',
2291        x_msg_count,
2292        x_msg_data,
2293        '_PUB');
2294     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2295       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2296       (l_api_name,
2297        G_PKG_NAME,
2298        'OKC_API.G_RET_STS_UNEXP_ERROR',
2299        x_msg_count,
2300        x_msg_data,
2301        '_PUB');
2302     WHEN OTHERS THEN
2303       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2304       (l_api_name,
2305        G_PKG_NAME,
2306        'OTHERS',
2307        x_msg_count,
2308        x_msg_data,
2309        '_PUB');
2310  END delete_subclass_top_line;
2311 
2312  PROCEDURE delete_subclass_top_line(
2313     p_api_version                  IN NUMBER,
2314     p_init_msg_list                IN VARCHAR2 ,
2315     x_return_status                OUT NOCOPY VARCHAR2,
2316     x_msg_count                    OUT NOCOPY NUMBER,
2317     x_msg_data                     OUT NOCOPY VARCHAR2,
2318     p_stlv_tbl                     IN  stlv_tbl_type) IS
2319     i				   NUMBER := 0;
2320     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2321   BEGIN
2322     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2323     IF p_stlv_tbl.COUNT > 0 THEN
2324       i := p_stlv_tbl.FIRST;
2325       LOOP
2326         delete_subclass_top_line(
2327                 p_api_version,
2328                 p_init_msg_list,
2329                 l_return_status,
2330                 x_msg_count,
2331                 x_msg_data,
2332                 p_stlv_tbl(i));
2333         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2334           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2335             x_return_status := l_return_status;
2336             raise G_EXCEPTION_HALT_VALIDATION;
2337           ELSE
2338             x_return_status := l_return_status;
2339           END IF;
2340         END IF;
2341         EXIT WHEN (i = p_stlv_tbl.LAST);
2342         i := p_stlv_tbl.NEXT(i);
2343       END LOOP;
2344     END IF;
2345   EXCEPTION
2346     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2347       NULL;
2348     WHEN OTHERS THEN
2349       OKC_API.set_message(p_app_name      => g_app_name,
2350                           p_msg_name      => g_unexpected_error,
2351                           p_token1        => g_sqlcode_token,
2352                           p_token1_value  => sqlcode,
2353                           p_token2        => g_sqlerrm_token,
2354                           p_token2_value  => sqlerrm);
2355       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2356  END delete_subclass_top_line;
2357 
2358  PROCEDURE lock_subclass_top_line(
2359     p_api_version                  IN NUMBER,
2360     p_init_msg_list                IN VARCHAR2 ,
2361     x_return_status                OUT NOCOPY VARCHAR2,
2362     x_msg_count                    OUT NOCOPY NUMBER,
2363     x_msg_data                     OUT NOCOPY VARCHAR2,
2364     p_stlv_rec                     IN stlv_rec_type) IS
2365  BEGIN
2366     okc_subclass_pvt.lock_subclass_top_line(
2367                 p_api_version,
2368                 p_init_msg_list,
2369                 x_return_status,
2370                 x_msg_count,
2371                 x_msg_data,
2372                 p_stlv_rec);
2373  END lock_subclass_top_line;
2374 
2375  PROCEDURE lock_subclass_top_line(
2376     p_api_version                  IN NUMBER,
2377     p_init_msg_list                IN VARCHAR2 ,
2378     x_return_status                OUT NOCOPY VARCHAR2,
2379     x_msg_count                    OUT NOCOPY NUMBER,
2380     x_msg_data                     OUT NOCOPY VARCHAR2,
2381     p_stlv_tbl                     IN  stlv_tbl_type) IS
2382  BEGIN
2383     okc_subclass_pvt.lock_subclass_top_line(
2384                 p_api_version,
2385                 p_init_msg_list,
2386                 x_return_status,
2387                 x_msg_count,
2388                 x_msg_data,
2389                 p_stlv_tbl);
2390  END lock_subclass_top_line;
2391 
2392  PROCEDURE validate_subclass_top_line(
2393     p_api_version                  IN NUMBER,
2394     p_init_msg_list                IN VARCHAR2 ,
2395     x_return_status                OUT NOCOPY VARCHAR2,
2396     x_msg_count                    OUT NOCOPY NUMBER,
2397     x_msg_data                     OUT NOCOPY VARCHAR2,
2398     p_stlv_rec                     IN stlv_rec_type) IS
2399  BEGIN
2400     okc_subclass_pvt.validate_subclass_top_line(
2401                 p_api_version,
2402                 p_init_msg_list,
2403                 x_return_status,
2404                 x_msg_count,
2405                 x_msg_data,
2406                 p_stlv_rec);
2407  END validate_subclass_top_line;
2408 
2409  PROCEDURE validate_subclass_top_line(
2410     p_api_version                  IN NUMBER,
2411     p_init_msg_list                IN VARCHAR2 ,
2412     x_return_status                OUT NOCOPY VARCHAR2,
2413     x_msg_count                    OUT NOCOPY NUMBER,
2414     x_msg_data                     OUT NOCOPY VARCHAR2,
2415     p_stlv_tbl                     IN  stlv_tbl_type) IS
2416  BEGIN
2417     okc_subclass_pvt.validate_subclass_top_line(
2418                 p_api_version,
2419                 p_init_msg_list,
2420                 x_return_status,
2421                 x_msg_count,
2422                 x_msg_data,
2423                 p_stlv_tbl);
2424  END validate_subclass_top_line;
2425 
2426  PROCEDURE create_line_style_roles(
2427     p_api_version                  IN NUMBER,
2428     p_init_msg_list                IN VARCHAR2 ,
2429     x_return_status                OUT NOCOPY VARCHAR2,
2430     x_msg_count                    OUT NOCOPY NUMBER,
2431     x_msg_data                     OUT NOCOPY VARCHAR2,
2432     p_lsrv_rec                     IN lsrv_rec_type,
2433     x_lsrv_rec                     OUT NOCOPY lsrv_rec_type) IS
2434     l_api_name                     CONSTANT VARCHAR2(30) := 'create_line_style_roles';
2435     l_return_status		   VARCHAR2(1);
2436     l_lsrv_rec                     lsrv_rec_type := p_lsrv_rec;
2437   BEGIN
2438     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2439 					      p_init_msg_list,
2440 					      '_PUB',
2441                                               x_return_status);
2442     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2443       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2444     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2445       raise OKC_API.G_EXCEPTION_ERROR;
2446     END IF;
2447     -- Call user hook for BEFORE
2448     g_lsrv_rec := l_lsrv_rec;
2449     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2450     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2451       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2452     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2453       raise OKC_API.G_EXCEPTION_ERROR;
2454     END IF;
2455     l_lsrv_rec := migrate_lsrv(l_lsrv_rec, g_lsrv_rec);
2456 
2457     okc_subclass_pvt.create_line_style_roles(
2458                 p_api_version,
2459                 p_init_msg_list,
2460                 x_return_status,
2461                 x_msg_count,
2462                 x_msg_data,
2463                 l_lsrv_rec,
2464                 x_lsrv_rec);
2465     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2466       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2467     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2468       raise OKC_API.G_EXCEPTION_ERROR;
2469     END IF;
2470 
2471     -- Call user hook for AFTER
2472     g_lsrv_rec := x_lsrv_rec;
2473     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2474     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2475       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2476     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2477       raise OKC_API.G_EXCEPTION_ERROR;
2478     END IF;
2479     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2480   EXCEPTION
2481     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2482       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2483       (l_api_name,
2484        G_PKG_NAME,
2485        'OKC_API.G_RET_STS_ERROR',
2486        x_msg_count,
2487        x_msg_data,
2488        '_PUB');
2489     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2490       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2491       (l_api_name,
2492        G_PKG_NAME,
2493        'OKC_API.G_RET_STS_UNEXP_ERROR',
2494        x_msg_count,
2495        x_msg_data,
2496        '_PUB');
2497     WHEN OTHERS THEN
2498       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2499       (l_api_name,
2500        G_PKG_NAME,
2501        'OTHERS',
2502        x_msg_count,
2503        x_msg_data,
2504        '_PUB');
2505  END create_line_style_roles;
2506 
2507  PROCEDURE create_line_style_roles(
2508     p_api_version                  IN NUMBER,
2509     p_init_msg_list                IN VARCHAR2 ,
2510     x_return_status                OUT NOCOPY VARCHAR2,
2511     x_msg_count                    OUT NOCOPY NUMBER,
2512     x_msg_data                     OUT NOCOPY VARCHAR2,
2513     p_lsrv_tbl                     IN  lsrv_tbl_type,
2514     x_lsrv_tbl                     OUT NOCOPY lsrv_tbl_type) IS
2515     i				   NUMBER := 0;
2516     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2517   BEGIN
2518     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2519     IF p_lsrv_tbl.COUNT > 0 THEN
2520       i := p_lsrv_tbl.FIRST;
2521       LOOP
2522         create_line_style_roles(
2523                 p_api_version,
2524                 p_init_msg_list,
2525                 l_return_status,
2526                 x_msg_count,
2527                 x_msg_data,
2528                 p_lsrv_tbl(i),
2529                 x_lsrv_tbl(i));
2530         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2531           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2532             x_return_status := l_return_status;
2533             raise G_EXCEPTION_HALT_VALIDATION;
2534           ELSE
2535             x_return_status := l_return_status;
2536           END IF;
2537         END IF;
2538         EXIT WHEN (i = p_lsrv_tbl.LAST);
2539         i := p_lsrv_tbl.NEXT(i);
2540       END LOOP;
2541     END IF;
2542   EXCEPTION
2543     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2544       NULL;
2545     WHEN OTHERS THEN
2546       OKC_API.set_message(p_app_name      => g_app_name,
2547                           p_msg_name      => g_unexpected_error,
2548                           p_token1        => g_sqlcode_token,
2549                           p_token1_value  => sqlcode,
2550                           p_token2        => g_sqlerrm_token,
2551                           p_token2_value  => sqlerrm);
2552       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2553  END create_line_style_roles;
2554 
2555  PROCEDURE update_line_style_roles(
2556     p_api_version                  IN NUMBER,
2557     p_init_msg_list                IN VARCHAR2 ,
2558     x_return_status                OUT NOCOPY VARCHAR2,
2559     x_msg_count                    OUT NOCOPY NUMBER,
2560     x_msg_data                     OUT NOCOPY VARCHAR2,
2561     p_lsrv_rec                     IN lsrv_rec_type,
2562     x_lsrv_rec                     OUT NOCOPY lsrv_rec_type) IS
2563     l_api_name                     CONSTANT VARCHAR2(30) := 'update_line_style_roles';
2564     l_return_status		   VARCHAR2(1);
2565     l_lsrv_rec                     lsrv_rec_type := p_lsrv_rec;
2566   BEGIN
2567     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2568 					      p_init_msg_list,
2569 					      '_PUB',
2570                                               x_return_status);
2571     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2572       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2573     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2574       raise OKC_API.G_EXCEPTION_ERROR;
2575     END IF;
2576     -- Call user hook for BEFORE
2577     g_lsrv_rec := l_lsrv_rec;
2578     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2579     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2580       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2581     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2582       raise OKC_API.G_EXCEPTION_ERROR;
2583     END IF;
2584     l_lsrv_rec := migrate_lsrv(l_lsrv_rec, g_lsrv_rec);
2585 
2586     okc_subclass_pvt.update_line_style_roles(
2587                 p_api_version,
2588                 p_init_msg_list,
2589                 x_return_status,
2590                 x_msg_count,
2591                 x_msg_data,
2592                 l_lsrv_rec,
2593                 x_lsrv_rec);
2594     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2595       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2596     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2597       raise OKC_API.G_EXCEPTION_ERROR;
2598     END IF;
2599 
2600     -- Call user hook for AFTER
2601     g_lsrv_rec := x_lsrv_rec;
2602     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2603     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2604       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2605     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2606       raise OKC_API.G_EXCEPTION_ERROR;
2607     END IF;
2608     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2609   EXCEPTION
2610     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2611       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2612       (l_api_name,
2613        G_PKG_NAME,
2614        'OKC_API.G_RET_STS_ERROR',
2615        x_msg_count,
2616        x_msg_data,
2617        '_PUB');
2618     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2619       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2620       (l_api_name,
2621        G_PKG_NAME,
2622        'OKC_API.G_RET_STS_UNEXP_ERROR',
2623        x_msg_count,
2624        x_msg_data,
2625        '_PUB');
2626     WHEN OTHERS THEN
2627       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2628       (l_api_name,
2629        G_PKG_NAME,
2630        'OTHERS',
2631        x_msg_count,
2632        x_msg_data,
2633        '_PUB');
2634  END update_line_style_roles;
2635 
2636  PROCEDURE update_line_style_roles(
2637     p_api_version                  IN NUMBER,
2638     p_init_msg_list                IN VARCHAR2 ,
2639     x_return_status                OUT NOCOPY VARCHAR2,
2640     x_msg_count                    OUT NOCOPY NUMBER,
2641     x_msg_data                     OUT NOCOPY VARCHAR2,
2642     p_lsrv_tbl                     IN  lsrv_tbl_type,
2643     x_lsrv_tbl                     OUT NOCOPY lsrv_tbl_type) IS
2644     i				   NUMBER := 0;
2645     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2646   BEGIN
2647     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2648     IF p_lsrv_tbl.COUNT > 0 THEN
2649       i := p_lsrv_tbl.FIRST;
2650       LOOP
2651         update_line_style_roles(
2652                 p_api_version,
2653                 p_init_msg_list,
2654                 l_return_status,
2655                 x_msg_count,
2656                 x_msg_data,
2657                 p_lsrv_tbl(i),
2658                 x_lsrv_tbl(i));
2659         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2660           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2661             x_return_status := l_return_status;
2662             raise G_EXCEPTION_HALT_VALIDATION;
2663           ELSE
2664             x_return_status := l_return_status;
2665           END IF;
2666         END IF;
2667         EXIT WHEN (i = p_lsrv_tbl.LAST);
2668         i := p_lsrv_tbl.NEXT(i);
2669       END LOOP;
2670     END IF;
2671   EXCEPTION
2672     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2673       NULL;
2674     WHEN OTHERS THEN
2675       OKC_API.set_message(p_app_name      => g_app_name,
2676                           p_msg_name      => g_unexpected_error,
2677                           p_token1        => g_sqlcode_token,
2678                           p_token1_value  => sqlcode,
2679                           p_token2        => g_sqlerrm_token,
2680                           p_token2_value  => sqlerrm);
2681       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2682  END update_line_style_roles;
2683 
2684  PROCEDURE delete_line_style_roles(
2685     p_api_version                  IN NUMBER,
2686     p_init_msg_list                IN VARCHAR2 ,
2687     x_return_status                OUT NOCOPY VARCHAR2,
2688     x_msg_count                    OUT NOCOPY NUMBER,
2689     x_msg_data                     OUT NOCOPY VARCHAR2,
2690     p_lsrv_rec                     IN lsrv_rec_type) IS
2691     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_line_style_roles';
2692     l_return_status		   VARCHAR2(1);
2693     l_lsrv_rec                     lsrv_rec_type := p_lsrv_rec;
2694   BEGIN
2695     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2696 					      p_init_msg_list,
2697 					      '_PUB',
2698                                               x_return_status);
2699     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2700       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2701     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2702       raise OKC_API.G_EXCEPTION_ERROR;
2703     END IF;
2704     -- Call user hook for BEFORE
2705     g_lsrv_rec := l_lsrv_rec;
2706     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2707     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2708       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2709     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2710       raise OKC_API.G_EXCEPTION_ERROR;
2711     END IF;
2712 
2713     okc_subclass_pvt.delete_line_style_roles(
2714                 p_api_version,
2715                 p_init_msg_list,
2716                 x_return_status,
2717                 x_msg_count,
2718                 x_msg_data,
2719                 p_lsrv_rec);
2720     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2721       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2722     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2723       raise OKC_API.G_EXCEPTION_ERROR;
2724     END IF;
2725 
2726     -- Call user hook for AFTER
2727     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2728     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2729       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2730     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2731       raise OKC_API.G_EXCEPTION_ERROR;
2732     END IF;
2733     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2734   EXCEPTION
2735     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2736       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2737       (l_api_name,
2738        G_PKG_NAME,
2739        'OKC_API.G_RET_STS_ERROR',
2740        x_msg_count,
2741        x_msg_data,
2742        '_PUB');
2743     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2744       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2745       (l_api_name,
2746        G_PKG_NAME,
2747        'OKC_API.G_RET_STS_UNEXP_ERROR',
2748        x_msg_count,
2749        x_msg_data,
2750        '_PUB');
2751     WHEN OTHERS THEN
2752       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2753       (l_api_name,
2754        G_PKG_NAME,
2755        'OTHERS',
2756        x_msg_count,
2757        x_msg_data,
2758        '_PUB');
2759  END delete_line_style_roles;
2760 
2761  PROCEDURE delete_line_style_roles(
2762     p_api_version                  IN NUMBER,
2763     p_init_msg_list                IN VARCHAR2 ,
2764     x_return_status                OUT NOCOPY VARCHAR2,
2765     x_msg_count                    OUT NOCOPY NUMBER,
2766     x_msg_data                     OUT NOCOPY VARCHAR2,
2767     p_lsrv_tbl                     IN  lsrv_tbl_type) IS
2768     i				   NUMBER := 0;
2769     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2770   BEGIN
2771     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2772     IF p_lsrv_tbl.COUNT > 0 THEN
2773       i := p_lsrv_tbl.FIRST;
2774       LOOP
2775         delete_line_style_roles(
2776                 p_api_version,
2777                 p_init_msg_list,
2778                 l_return_status,
2779                 x_msg_count,
2780                 x_msg_data,
2781                 p_lsrv_tbl(i));
2782         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2783           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2784             x_return_status := l_return_status;
2785             raise G_EXCEPTION_HALT_VALIDATION;
2786           ELSE
2787             x_return_status := l_return_status;
2788           END IF;
2789         END IF;
2790         EXIT WHEN (i = p_lsrv_tbl.LAST);
2791         i := p_lsrv_tbl.NEXT(i);
2792       END LOOP;
2793     END IF;
2794   EXCEPTION
2795     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2796       NULL;
2797     WHEN OTHERS THEN
2798       OKC_API.set_message(p_app_name      => g_app_name,
2799                           p_msg_name      => g_unexpected_error,
2800                           p_token1        => g_sqlcode_token,
2801                           p_token1_value  => sqlcode,
2802                           p_token2        => g_sqlerrm_token,
2803                           p_token2_value  => sqlerrm);
2804       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2805  END delete_line_style_roles;
2806 
2807  PROCEDURE lock_line_style_roles(
2808     p_api_version                  IN NUMBER,
2809     p_init_msg_list                IN VARCHAR2 ,
2810     x_return_status                OUT NOCOPY VARCHAR2,
2811     x_msg_count                    OUT NOCOPY NUMBER,
2812     x_msg_data                     OUT NOCOPY VARCHAR2,
2813     p_lsrv_rec                     IN lsrv_rec_type) IS
2814  BEGIN
2815     okc_subclass_pvt.lock_line_style_roles(
2816                 p_api_version,
2817                 p_init_msg_list,
2818                 x_return_status,
2819                 x_msg_count,
2820                 x_msg_data,
2821                 p_lsrv_rec);
2822  END lock_line_style_roles;
2823 
2824  PROCEDURE lock_line_style_roles(
2825     p_api_version                  IN NUMBER,
2826     p_init_msg_list                IN VARCHAR2 ,
2827     x_return_status                OUT NOCOPY VARCHAR2,
2828     x_msg_count                    OUT NOCOPY NUMBER,
2829     x_msg_data                     OUT NOCOPY VARCHAR2,
2830     p_lsrv_tbl                     IN  lsrv_tbl_type) IS
2831  BEGIN
2832     okc_subclass_pvt.lock_line_style_roles(
2833                 p_api_version,
2834                 p_init_msg_list,
2835                 x_return_status,
2836                 x_msg_count,
2837                 x_msg_data,
2838                 p_lsrv_tbl);
2839  END lock_line_style_roles;
2840 
2841  PROCEDURE validate_line_style_roles(
2842     p_api_version                  IN NUMBER,
2843     p_init_msg_list                IN VARCHAR2 ,
2844     x_return_status                OUT NOCOPY VARCHAR2,
2845     x_msg_count                    OUT NOCOPY NUMBER,
2846     x_msg_data                     OUT NOCOPY VARCHAR2,
2847     p_lsrv_rec                     IN lsrv_rec_type) IS
2848  BEGIN
2849     okc_subclass_pvt.validate_line_style_roles(
2850                 p_api_version,
2851                 p_init_msg_list,
2852                 x_return_status,
2853                 x_msg_count,
2854                 x_msg_data,
2855                 p_lsrv_rec);
2856  END validate_line_style_roles;
2857 
2858  PROCEDURE validate_line_style_roles(
2859     p_api_version                  IN NUMBER,
2860     p_init_msg_list                IN VARCHAR2 ,
2861     x_return_status                OUT NOCOPY VARCHAR2,
2862     x_msg_count                    OUT NOCOPY NUMBER,
2863     x_msg_data                     OUT NOCOPY VARCHAR2,
2864     p_lsrv_tbl                     IN  lsrv_tbl_type) IS
2865  BEGIN
2866     okc_subclass_pvt.validate_line_style_roles(
2867                 p_api_version,
2868                 p_init_msg_list,
2869                 x_return_status,
2870                 x_msg_count,
2871                 x_msg_data,
2872                 p_lsrv_tbl);
2873  END validate_line_style_roles;
2874 
2875  PROCEDURE create_lse_rule_groups(
2876     p_api_version                  IN NUMBER,
2877     p_init_msg_list                IN VARCHAR2 ,
2878     x_return_status                OUT NOCOPY VARCHAR2,
2879     x_msg_count                    OUT NOCOPY NUMBER,
2880     x_msg_data                     OUT NOCOPY VARCHAR2,
2881     p_lrgv_rec                     IN lrgv_rec_type,
2882     x_lrgv_rec                     OUT NOCOPY lrgv_rec_type) IS
2883     l_api_name                     CONSTANT VARCHAR2(30) := 'create_lse_rule_groups';
2884     l_return_status		   VARCHAR2(1);
2885     l_lrgv_rec                     lrgv_rec_type := p_lrgv_rec;
2886   BEGIN
2887     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2888 					      p_init_msg_list,
2889 					      '_PUB',
2890                                               x_return_status);
2891     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2892       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2893     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2894       raise OKC_API.G_EXCEPTION_ERROR;
2895     END IF;
2896     -- Call user hook for BEFORE
2897     g_lrgv_rec := l_lrgv_rec;
2898     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2899     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2900       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2901     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2902       raise OKC_API.G_EXCEPTION_ERROR;
2903     END IF;
2904     l_lrgv_rec := migrate_lrgv(l_lrgv_rec, g_lrgv_rec);
2905 
2906     okc_subclass_pvt.create_lse_rule_groups(
2907                 p_api_version,
2908                 p_init_msg_list,
2909                 x_return_status,
2910                 x_msg_count,
2911                 x_msg_data,
2912                 l_lrgv_rec,
2913                 x_lrgv_rec);
2914     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2915       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2916     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2917       raise OKC_API.G_EXCEPTION_ERROR;
2918     END IF;
2919 
2920     -- Call user hook for AFTER
2921     g_lrgv_rec := x_lrgv_rec;
2922     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2923     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2924       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2925     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2926       raise OKC_API.G_EXCEPTION_ERROR;
2927     END IF;
2928     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2929   EXCEPTION
2930     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2931       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2932       (l_api_name,
2933        G_PKG_NAME,
2934        'OKC_API.G_RET_STS_ERROR',
2935        x_msg_count,
2936        x_msg_data,
2937        '_PUB');
2938     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2939       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2940       (l_api_name,
2941        G_PKG_NAME,
2942        'OKC_API.G_RET_STS_UNEXP_ERROR',
2943        x_msg_count,
2944        x_msg_data,
2945        '_PUB');
2946     WHEN OTHERS THEN
2947       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2948       (l_api_name,
2949        G_PKG_NAME,
2950        'OTHERS',
2951        x_msg_count,
2952        x_msg_data,
2953        '_PUB');
2954  END create_lse_rule_groups;
2955 
2956  PROCEDURE create_lse_rule_groups(
2957     p_api_version                  IN NUMBER,
2958     p_init_msg_list                IN VARCHAR2 ,
2959     x_return_status                OUT NOCOPY VARCHAR2,
2960     x_msg_count                    OUT NOCOPY NUMBER,
2961     x_msg_data                     OUT NOCOPY VARCHAR2,
2962     p_lrgv_tbl                     IN  lrgv_tbl_type,
2963     x_lrgv_tbl                     OUT NOCOPY lrgv_tbl_type) IS
2964     i				   NUMBER := 0;
2965     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2966   BEGIN
2967     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2968     IF p_lrgv_tbl.COUNT > 0 THEN
2969       i := p_lrgv_tbl.FIRST;
2970       LOOP
2971         create_lse_rule_groups(
2972                 p_api_version,
2973                 p_init_msg_list,
2974                 l_return_status,
2975                 x_msg_count,
2976                 x_msg_data,
2977                 p_lrgv_tbl(i),
2978                 x_lrgv_tbl(i));
2979         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2980           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2981             x_return_status := l_return_status;
2982             raise G_EXCEPTION_HALT_VALIDATION;
2983           ELSE
2984             x_return_status := l_return_status;
2985           END IF;
2986         END IF;
2987         EXIT WHEN (i = p_lrgv_tbl.LAST);
2988         i := p_lrgv_tbl.NEXT(i);
2989       END LOOP;
2990     END IF;
2991   EXCEPTION
2992     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2993       NULL;
2994     WHEN OTHERS THEN
2995       OKC_API.set_message(p_app_name      => g_app_name,
2996                           p_msg_name      => g_unexpected_error,
2997                           p_token1        => g_sqlcode_token,
2998                           p_token1_value  => sqlcode,
2999                           p_token2        => g_sqlerrm_token,
3000                           p_token2_value  => sqlerrm);
3001       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3002  END create_lse_rule_groups;
3003 
3004  PROCEDURE update_lse_rule_groups(
3005     p_api_version                  IN NUMBER,
3006     p_init_msg_list                IN VARCHAR2 ,
3007     x_return_status                OUT NOCOPY VARCHAR2,
3008     x_msg_count                    OUT NOCOPY NUMBER,
3009     x_msg_data                     OUT NOCOPY VARCHAR2,
3010     p_lrgv_rec                     IN lrgv_rec_type,
3011     x_lrgv_rec                     OUT NOCOPY lrgv_rec_type) IS
3012     l_api_name                     CONSTANT VARCHAR2(30) := 'update_lse_rule_groups';
3013     l_return_status		   VARCHAR2(1);
3014     l_lrgv_rec                     lrgv_rec_type := p_lrgv_rec;
3015   BEGIN
3016     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3017 					      p_init_msg_list,
3018 					      '_PUB',
3019                                               x_return_status);
3020     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3021       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3022     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3023       raise OKC_API.G_EXCEPTION_ERROR;
3024     END IF;
3025     -- Call user hook for BEFORE
3026     g_lrgv_rec := l_lrgv_rec;
3027     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3028     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3029       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3030     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3031       raise OKC_API.G_EXCEPTION_ERROR;
3032     END IF;
3033     l_lrgv_rec := migrate_lrgv(l_lrgv_rec, g_lrgv_rec);
3034 
3035     okc_subclass_pvt.update_lse_rule_groups(
3036                 p_api_version,
3037                 p_init_msg_list,
3038                 x_return_status,
3039                 x_msg_count,
3040                 x_msg_data,
3041                 l_lrgv_rec,
3042                 x_lrgv_rec);
3043     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3044       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3045     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3046       raise OKC_API.G_EXCEPTION_ERROR;
3047     END IF;
3048 
3049     -- Call user hook for AFTER
3050     g_lrgv_rec := x_lrgv_rec;
3051     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3052     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3053       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3054     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3055       raise OKC_API.G_EXCEPTION_ERROR;
3056     END IF;
3057     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3058   EXCEPTION
3059     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3060       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3061       (l_api_name,
3062        G_PKG_NAME,
3063        'OKC_API.G_RET_STS_ERROR',
3064        x_msg_count,
3065        x_msg_data,
3066        '_PUB');
3067     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3068       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3069       (l_api_name,
3070        G_PKG_NAME,
3071        'OKC_API.G_RET_STS_UNEXP_ERROR',
3072        x_msg_count,
3073        x_msg_data,
3074        '_PUB');
3075     WHEN OTHERS THEN
3076       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3077       (l_api_name,
3078        G_PKG_NAME,
3079        'OTHERS',
3080        x_msg_count,
3081        x_msg_data,
3082        '_PUB');
3083  END update_lse_rule_groups;
3084 
3085  PROCEDURE update_lse_rule_groups(
3086     p_api_version                  IN NUMBER,
3087     p_init_msg_list                IN VARCHAR2 ,
3088     x_return_status                OUT NOCOPY VARCHAR2,
3089     x_msg_count                    OUT NOCOPY NUMBER,
3090     x_msg_data                     OUT NOCOPY VARCHAR2,
3091     p_lrgv_tbl                     IN  lrgv_tbl_type,
3092     x_lrgv_tbl                     OUT NOCOPY lrgv_tbl_type) IS
3093     i				   NUMBER := 0;
3094     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3095   BEGIN
3096     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3097     IF p_lrgv_tbl.COUNT > 0 THEN
3098       i := p_lrgv_tbl.FIRST;
3099       LOOP
3100         update_lse_rule_groups(
3101                 p_api_version,
3102                 p_init_msg_list,
3103                 l_return_status,
3104                 x_msg_count,
3105                 x_msg_data,
3106                 p_lrgv_tbl(i),
3107                 x_lrgv_tbl(i));
3108         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3109           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3110             x_return_status := l_return_status;
3111             raise G_EXCEPTION_HALT_VALIDATION;
3112           ELSE
3113             x_return_status := l_return_status;
3114           END IF;
3115         END IF;
3116         EXIT WHEN (i = p_lrgv_tbl.LAST);
3117         i := p_lrgv_tbl.NEXT(i);
3118       END LOOP;
3119     END IF;
3120   EXCEPTION
3121     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3122       NULL;
3123     WHEN OTHERS THEN
3124       OKC_API.set_message(p_app_name      => g_app_name,
3125                           p_msg_name      => g_unexpected_error,
3126                           p_token1        => g_sqlcode_token,
3127                           p_token1_value  => sqlcode,
3128                           p_token2        => g_sqlerrm_token,
3129                           p_token2_value  => sqlerrm);
3130       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3131  END update_lse_rule_groups;
3132 
3133  PROCEDURE delete_lse_rule_groups(
3134     p_api_version                  IN NUMBER,
3135     p_init_msg_list                IN VARCHAR2 ,
3136     x_return_status                OUT NOCOPY VARCHAR2,
3137     x_msg_count                    OUT NOCOPY NUMBER,
3138     x_msg_data                     OUT NOCOPY VARCHAR2,
3139     p_lrgv_rec                     IN lrgv_rec_type) IS
3140     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_lse_rule_groups';
3141     l_return_status		   VARCHAR2(1);
3142     l_lrgv_rec                     lrgv_rec_type := p_lrgv_rec;
3143   BEGIN
3144     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3145 					      p_init_msg_list,
3146 					      '_PUB',
3147                                               x_return_status);
3148     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3149       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3150     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3151       raise OKC_API.G_EXCEPTION_ERROR;
3152     END IF;
3153     -- Call user hook for BEFORE
3154     g_lrgv_rec := l_lrgv_rec;
3155     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3156     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3157       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3158     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3159       raise OKC_API.G_EXCEPTION_ERROR;
3160     END IF;
3161 
3162     okc_subclass_pvt.delete_lse_rule_groups(
3163                 p_api_version,
3164                 p_init_msg_list,
3165                 x_return_status,
3166                 x_msg_count,
3167                 x_msg_data,
3168                 p_lrgv_rec);
3169     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3170       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3171     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3172       raise OKC_API.G_EXCEPTION_ERROR;
3173     END IF;
3174 
3175     -- Call user hook for AFTER
3176     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3177     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3178       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3179     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3180       raise OKC_API.G_EXCEPTION_ERROR;
3181     END IF;
3182     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3183   EXCEPTION
3184     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3185       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3186       (l_api_name,
3187        G_PKG_NAME,
3188        'OKC_API.G_RET_STS_ERROR',
3189        x_msg_count,
3190        x_msg_data,
3191        '_PUB');
3192     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3193       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3194       (l_api_name,
3195        G_PKG_NAME,
3196        'OKC_API.G_RET_STS_UNEXP_ERROR',
3197        x_msg_count,
3198        x_msg_data,
3199        '_PUB');
3200     WHEN OTHERS THEN
3201       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3202       (l_api_name,
3203        G_PKG_NAME,
3204        'OTHERS',
3205        x_msg_count,
3206        x_msg_data,
3207        '_PUB');
3208  END delete_lse_rule_groups;
3209 
3210  PROCEDURE delete_lse_rule_groups(
3211     p_api_version                  IN NUMBER,
3212     p_init_msg_list                IN VARCHAR2 ,
3213     x_return_status                OUT NOCOPY VARCHAR2,
3214     x_msg_count                    OUT NOCOPY NUMBER,
3215     x_msg_data                     OUT NOCOPY VARCHAR2,
3216     p_lrgv_tbl                     IN  lrgv_tbl_type) IS
3217     i				   NUMBER := 0;
3218     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3219   BEGIN
3220     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3221     IF p_lrgv_tbl.COUNT > 0 THEN
3222       i := p_lrgv_tbl.FIRST;
3223       LOOP
3224         delete_lse_rule_groups(
3225                 p_api_version,
3226                 p_init_msg_list,
3227                 l_return_status,
3228                 x_msg_count,
3229                 x_msg_data,
3230                 p_lrgv_tbl(i));
3231         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3232           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3233             x_return_status := l_return_status;
3234             raise G_EXCEPTION_HALT_VALIDATION;
3235           ELSE
3236             x_return_status := l_return_status;
3237           END IF;
3238         END IF;
3239         EXIT WHEN (i = p_lrgv_tbl.LAST);
3240         i := p_lrgv_tbl.NEXT(i);
3241       END LOOP;
3242     END IF;
3243   EXCEPTION
3244     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3245       NULL;
3246     WHEN OTHERS THEN
3247       OKC_API.set_message(p_app_name      => g_app_name,
3248                           p_msg_name      => g_unexpected_error,
3249                           p_token1        => g_sqlcode_token,
3250                           p_token1_value  => sqlcode,
3251                           p_token2        => g_sqlerrm_token,
3252                           p_token2_value  => sqlerrm);
3253       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3254  END delete_lse_rule_groups;
3255 
3256  PROCEDURE lock_lse_rule_groups(
3257     p_api_version                  IN NUMBER,
3258     p_init_msg_list                IN VARCHAR2 ,
3259     x_return_status                OUT NOCOPY VARCHAR2,
3260     x_msg_count                    OUT NOCOPY NUMBER,
3261     x_msg_data                     OUT NOCOPY VARCHAR2,
3262     p_lrgv_rec                     IN lrgv_rec_type) IS
3263  BEGIN
3264     okc_subclass_pvt.lock_lse_rule_groups(
3265                 p_api_version,
3266                 p_init_msg_list,
3267                 x_return_status,
3268                 x_msg_count,
3269                 x_msg_data,
3270                 p_lrgv_rec);
3271  END lock_lse_rule_groups;
3272 
3273  PROCEDURE lock_lse_rule_groups(
3274     p_api_version                  IN NUMBER,
3275     p_init_msg_list                IN VARCHAR2 ,
3276     x_return_status                OUT NOCOPY VARCHAR2,
3277     x_msg_count                    OUT NOCOPY NUMBER,
3278     x_msg_data                     OUT NOCOPY VARCHAR2,
3279     p_lrgv_tbl                     IN  lrgv_tbl_type) IS
3280  BEGIN
3281     okc_subclass_pvt.lock_lse_rule_groups(
3282                 p_api_version,
3283                 p_init_msg_list,
3284                 x_return_status,
3285                 x_msg_count,
3286                 x_msg_data,
3287                 p_lrgv_tbl);
3288  END lock_lse_rule_groups;
3289 
3290  PROCEDURE validate_lse_rule_groups(
3291     p_api_version                  IN NUMBER,
3292     p_init_msg_list                IN VARCHAR2 ,
3293     x_return_status                OUT NOCOPY VARCHAR2,
3294     x_msg_count                    OUT NOCOPY NUMBER,
3295     x_msg_data                     OUT NOCOPY VARCHAR2,
3296     p_lrgv_rec                     IN lrgv_rec_type) IS
3297  BEGIN
3298     okc_subclass_pvt.validate_lse_rule_groups(
3299                 p_api_version,
3300                 p_init_msg_list,
3301                 x_return_status,
3302                 x_msg_count,
3303                 x_msg_data,
3304                 p_lrgv_rec);
3305  END validate_lse_rule_groups;
3306 
3307  PROCEDURE validate_lse_rule_groups(
3308     p_api_version                  IN NUMBER,
3309     p_init_msg_list                IN VARCHAR2 ,
3310     x_return_status                OUT NOCOPY VARCHAR2,
3311     x_msg_count                    OUT NOCOPY NUMBER,
3312     x_msg_data                     OUT NOCOPY VARCHAR2,
3313     p_lrgv_tbl                     IN  lrgv_tbl_type) IS
3314  BEGIN
3315     okc_subclass_pvt.validate_lse_rule_groups(
3316                 p_api_version,
3317                 p_init_msg_list,
3318                 x_return_status,
3319                 x_msg_count,
3320                 x_msg_data,
3321                 p_lrgv_tbl);
3322  END validate_lse_rule_groups;
3323 
3324  PROCEDURE create_subclass_resps(
3325     p_api_version                  IN NUMBER,
3326     p_init_msg_list                IN VARCHAR2 ,
3327     x_return_status                OUT NOCOPY VARCHAR2,
3328     x_msg_count                    OUT NOCOPY NUMBER,
3329     x_msg_data                     OUT NOCOPY VARCHAR2,
3330     p_srav_rec                     IN srav_rec_type,
3331     x_srav_rec                     OUT NOCOPY srav_rec_type) IS
3332     l_api_name                     CONSTANT VARCHAR2(30) := 'create_subclass_resps';
3333     l_return_status		   VARCHAR2(1);
3334     l_srav_rec                     srav_rec_type := p_srav_rec;
3335   BEGIN
3336     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3337 					      p_init_msg_list,
3338 					      '_PUB',
3339                                               x_return_status);
3340     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3341       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3342     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3343       raise OKC_API.G_EXCEPTION_ERROR;
3344     END IF;
3345     -- Call user hook for BEFORE
3346     g_srav_rec := l_srav_rec;
3347     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3348     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3349       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3350     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3351       raise OKC_API.G_EXCEPTION_ERROR;
3352     END IF;
3353     l_srav_rec := migrate_srav(l_srav_rec, g_srav_rec);
3354 
3355     okc_subclass_pvt.create_subclass_resps(
3356                 p_api_version,
3357                 p_init_msg_list,
3358                 x_return_status,
3359                 x_msg_count,
3360                 x_msg_data,
3361                 l_srav_rec,
3362                 x_srav_rec);
3363     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3364       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3365     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3366       raise OKC_API.G_EXCEPTION_ERROR;
3367     END IF;
3368 
3369     -- Call user hook for AFTER
3370     g_srav_rec := x_srav_rec;
3371     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3372     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3373       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3374     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3375       raise OKC_API.G_EXCEPTION_ERROR;
3376     END IF;
3377     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3378   EXCEPTION
3379     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3380       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3381       (l_api_name,
3382        G_PKG_NAME,
3383        'OKC_API.G_RET_STS_ERROR',
3384        x_msg_count,
3385        x_msg_data,
3386        '_PUB');
3387     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3388       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3389       (l_api_name,
3390        G_PKG_NAME,
3391        'OKC_API.G_RET_STS_UNEXP_ERROR',
3392        x_msg_count,
3393        x_msg_data,
3394        '_PUB');
3395     WHEN OTHERS THEN
3396       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3397       (l_api_name,
3398        G_PKG_NAME,
3399        'OTHERS',
3400        x_msg_count,
3401        x_msg_data,
3402        '_PUB');
3403  END create_subclass_resps;
3404 
3405  PROCEDURE create_subclass_resps(
3406     p_api_version                  IN NUMBER,
3407     p_init_msg_list                IN VARCHAR2 ,
3408     x_return_status                OUT NOCOPY VARCHAR2,
3409     x_msg_count                    OUT NOCOPY NUMBER,
3410     x_msg_data                     OUT NOCOPY VARCHAR2,
3411     p_srav_tbl                     IN  srav_tbl_type,
3412     x_srav_tbl                     OUT NOCOPY srav_tbl_type) IS
3413     i				   NUMBER := 0;
3414     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3415   BEGIN
3416     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3417     IF p_srav_tbl.COUNT > 0 THEN
3418       i := p_srav_tbl.FIRST;
3419       LOOP
3420         create_subclass_resps(
3421                 p_api_version,
3422                 p_init_msg_list,
3423                 l_return_status,
3424                 x_msg_count,
3425                 x_msg_data,
3426                 p_srav_tbl(i),
3427                 x_srav_tbl(i));
3428         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3429           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3430             x_return_status := l_return_status;
3431             raise G_EXCEPTION_HALT_VALIDATION;
3432           ELSE
3433             x_return_status := l_return_status;
3434           END IF;
3435         END IF;
3436         EXIT WHEN (i = p_srav_tbl.LAST);
3437         i := p_srav_tbl.NEXT(i);
3438       END LOOP;
3439     END IF;
3440   EXCEPTION
3441     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3442       NULL;
3443     WHEN OTHERS THEN
3444       OKC_API.set_message(p_app_name      => g_app_name,
3445                           p_msg_name      => g_unexpected_error,
3446                           p_token1        => g_sqlcode_token,
3447                           p_token1_value  => sqlcode,
3448                           p_token2        => g_sqlerrm_token,
3449                           p_token2_value  => sqlerrm);
3450       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3451  END create_subclass_resps;
3452 
3453  PROCEDURE update_subclass_resps(
3454     p_api_version                  IN NUMBER,
3455     p_init_msg_list                IN VARCHAR2 ,
3456     x_return_status                OUT NOCOPY VARCHAR2,
3457     x_msg_count                    OUT NOCOPY NUMBER,
3458     x_msg_data                     OUT NOCOPY VARCHAR2,
3459     p_srav_rec                     IN srav_rec_type,
3460     x_srav_rec                     OUT NOCOPY srav_rec_type) IS
3461     l_api_name                     CONSTANT VARCHAR2(30) := 'update_subclass_resps';
3462     l_return_status		   VARCHAR2(1);
3463     l_srav_rec                     srav_rec_type := p_srav_rec;
3464   BEGIN
3465     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3466 					      p_init_msg_list,
3467 					      '_PUB',
3468                                               x_return_status);
3469     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3470       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3471     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3472       raise OKC_API.G_EXCEPTION_ERROR;
3473     END IF;
3474     -- Call user hook for BEFORE
3475     g_srav_rec := l_srav_rec;
3476     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3477     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3478       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3479     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3480       raise OKC_API.G_EXCEPTION_ERROR;
3481     END IF;
3482     l_srav_rec := migrate_srav(l_srav_rec, g_srav_rec);
3483 
3484     okc_subclass_pvt.update_subclass_resps(
3485                 p_api_version,
3486                 p_init_msg_list,
3487                 x_return_status,
3488                 x_msg_count,
3489                 x_msg_data,
3490                 l_srav_rec,
3491                 x_srav_rec);
3492     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3493       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3494     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3495       raise OKC_API.G_EXCEPTION_ERROR;
3496     END IF;
3497 
3498     -- Call user hook for AFTER
3499     g_srav_rec := x_srav_rec;
3500     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3501     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3502       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3503     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3504       raise OKC_API.G_EXCEPTION_ERROR;
3505     END IF;
3506     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3507   EXCEPTION
3508     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3509       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3510       (l_api_name,
3511        G_PKG_NAME,
3512        'OKC_API.G_RET_STS_ERROR',
3513        x_msg_count,
3514        x_msg_data,
3515        '_PUB');
3516     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3517       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3518       (l_api_name,
3519        G_PKG_NAME,
3520        'OKC_API.G_RET_STS_UNEXP_ERROR',
3521        x_msg_count,
3522        x_msg_data,
3523        '_PUB');
3524     WHEN OTHERS THEN
3525       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3526       (l_api_name,
3527        G_PKG_NAME,
3528        'OTHERS',
3529        x_msg_count,
3530        x_msg_data,
3531        '_PUB');
3532  END update_subclass_resps;
3533 
3534  PROCEDURE update_subclass_resps(
3535     p_api_version                  IN NUMBER,
3536     p_init_msg_list                IN VARCHAR2 ,
3537     x_return_status                OUT NOCOPY VARCHAR2,
3538     x_msg_count                    OUT NOCOPY NUMBER,
3539     x_msg_data                     OUT NOCOPY VARCHAR2,
3540     p_srav_tbl                     IN  srav_tbl_type,
3541     x_srav_tbl                     OUT NOCOPY srav_tbl_type) IS
3542     i				   NUMBER := 0;
3543     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3544   BEGIN
3545     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3546     IF p_srav_tbl.COUNT > 0 THEN
3547       i := p_srav_tbl.FIRST;
3548       LOOP
3549         update_subclass_resps(
3550                 p_api_version,
3551                 p_init_msg_list,
3552                 l_return_status,
3553                 x_msg_count,
3554                 x_msg_data,
3555                 p_srav_tbl(i),
3556                 x_srav_tbl(i));
3557         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3558           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3559             x_return_status := l_return_status;
3560             raise G_EXCEPTION_HALT_VALIDATION;
3561           ELSE
3562             x_return_status := l_return_status;
3563           END IF;
3564         END IF;
3565         EXIT WHEN (i = p_srav_tbl.LAST);
3566         i := p_srav_tbl.NEXT(i);
3567       END LOOP;
3568     END IF;
3569   EXCEPTION
3570     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3571       NULL;
3572     WHEN OTHERS THEN
3573       OKC_API.set_message(p_app_name      => g_app_name,
3574                           p_msg_name      => g_unexpected_error,
3575                           p_token1        => g_sqlcode_token,
3576                           p_token1_value  => sqlcode,
3577                           p_token2        => g_sqlerrm_token,
3578                           p_token2_value  => sqlerrm);
3579       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3580  END update_subclass_resps;
3581 
3582  PROCEDURE delete_subclass_resps(
3583     p_api_version                  IN NUMBER,
3584     p_init_msg_list                IN VARCHAR2 ,
3585     x_return_status                OUT NOCOPY VARCHAR2,
3586     x_msg_count                    OUT NOCOPY NUMBER,
3587     x_msg_data                     OUT NOCOPY VARCHAR2,
3588     p_srav_rec                     IN srav_rec_type) IS
3589     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_subclass_resps';
3590     l_return_status		   VARCHAR2(1);
3591     l_srav_rec                     srav_rec_type := p_srav_rec;
3592   BEGIN
3593     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3594 					      p_init_msg_list,
3595 					      '_PUB',
3596                                               x_return_status);
3597     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3598       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3599     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3600       raise OKC_API.G_EXCEPTION_ERROR;
3601     END IF;
3602     -- Call user hook for BEFORE
3603     g_srav_rec := l_srav_rec;
3604     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3605     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3606       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3607     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3608       raise OKC_API.G_EXCEPTION_ERROR;
3609     END IF;
3610 
3611     okc_subclass_pvt.delete_subclass_resps(
3612                 p_api_version,
3613                 p_init_msg_list,
3614                 x_return_status,
3615                 x_msg_count,
3616                 x_msg_data,
3617                 p_srav_rec);
3618     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3619       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3620     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3621       raise OKC_API.G_EXCEPTION_ERROR;
3622     END IF;
3623 
3624     -- Call user hook for AFTER
3625     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3626     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3627       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3628     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3629       raise OKC_API.G_EXCEPTION_ERROR;
3630     END IF;
3631     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3632   EXCEPTION
3633     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3634       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3635       (l_api_name,
3636        G_PKG_NAME,
3637        'OKC_API.G_RET_STS_ERROR',
3638        x_msg_count,
3639        x_msg_data,
3640        '_PUB');
3641     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3642       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3643       (l_api_name,
3644        G_PKG_NAME,
3645        'OKC_API.G_RET_STS_UNEXP_ERROR',
3646        x_msg_count,
3647        x_msg_data,
3648        '_PUB');
3649     WHEN OTHERS THEN
3650       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3651       (l_api_name,
3652        G_PKG_NAME,
3653        'OTHERS',
3654        x_msg_count,
3655        x_msg_data,
3656        '_PUB');
3657  END delete_subclass_resps;
3658 
3659  PROCEDURE delete_subclass_resps(
3660     p_api_version                  IN NUMBER,
3661     p_init_msg_list                IN VARCHAR2 ,
3662     x_return_status                OUT NOCOPY VARCHAR2,
3663     x_msg_count                    OUT NOCOPY NUMBER,
3664     x_msg_data                     OUT NOCOPY VARCHAR2,
3665     p_srav_tbl                     IN  srav_tbl_type) IS
3666     i				   NUMBER := 0;
3667     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3668   BEGIN
3669     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3670     IF p_srav_tbl.COUNT > 0 THEN
3671       i := p_srav_tbl.FIRST;
3672       LOOP
3673         delete_subclass_resps(
3674                 p_api_version,
3675                 p_init_msg_list,
3676                 l_return_status,
3677                 x_msg_count,
3678                 x_msg_data,
3679                 p_srav_tbl(i));
3680         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3681           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3682             x_return_status := l_return_status;
3683             raise G_EXCEPTION_HALT_VALIDATION;
3684           ELSE
3685             x_return_status := l_return_status;
3686           END IF;
3687         END IF;
3688         EXIT WHEN (i = p_srav_tbl.LAST);
3689         i := p_srav_tbl.NEXT(i);
3690       END LOOP;
3691     END IF;
3692   EXCEPTION
3693     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3694       NULL;
3695     WHEN OTHERS THEN
3696       OKC_API.set_message(p_app_name      => g_app_name,
3697                           p_msg_name      => g_unexpected_error,
3698                           p_token1        => g_sqlcode_token,
3699                           p_token1_value  => sqlcode,
3700                           p_token2        => g_sqlerrm_token,
3701                           p_token2_value  => sqlerrm);
3702       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3703  END delete_subclass_resps;
3704 
3705  PROCEDURE lock_subclass_resps(
3706     p_api_version                  IN NUMBER,
3707     p_init_msg_list                IN VARCHAR2 ,
3708     x_return_status                OUT NOCOPY VARCHAR2,
3709     x_msg_count                    OUT NOCOPY NUMBER,
3710     x_msg_data                     OUT NOCOPY VARCHAR2,
3711     p_srav_rec                     IN srav_rec_type) IS
3712  BEGIN
3713     okc_subclass_pvt.lock_subclass_resps(
3714                 p_api_version,
3715                 p_init_msg_list,
3716                 x_return_status,
3717                 x_msg_count,
3718                 x_msg_data,
3719                 p_srav_rec);
3720  END lock_subclass_resps;
3721 
3722  PROCEDURE lock_subclass_resps(
3723     p_api_version                  IN NUMBER,
3724     p_init_msg_list                IN VARCHAR2 ,
3725     x_return_status                OUT NOCOPY VARCHAR2,
3726     x_msg_count                    OUT NOCOPY NUMBER,
3727     x_msg_data                     OUT NOCOPY VARCHAR2,
3728     p_srav_tbl                     IN  srav_tbl_type) IS
3729  BEGIN
3730     okc_subclass_pvt.lock_subclass_resps(
3731                 p_api_version,
3732                 p_init_msg_list,
3733                 x_return_status,
3734                 x_msg_count,
3735                 x_msg_data,
3736                 p_srav_tbl);
3737  END lock_subclass_resps;
3738 
3739  PROCEDURE validate_subclass_resps(
3740     p_api_version                  IN NUMBER,
3741     p_init_msg_list                IN VARCHAR2 ,
3742     x_return_status                OUT NOCOPY VARCHAR2,
3743     x_msg_count                    OUT NOCOPY NUMBER,
3744     x_msg_data                     OUT NOCOPY VARCHAR2,
3745     p_srav_rec                     IN srav_rec_type) IS
3746  BEGIN
3747     okc_subclass_pvt.validate_subclass_resps(
3748                 p_api_version,
3749                 p_init_msg_list,
3750                 x_return_status,
3751                 x_msg_count,
3752                 x_msg_data,
3753                 p_srav_rec);
3754  END validate_subclass_resps;
3755 
3756  PROCEDURE validate_subclass_resps(
3757     p_api_version                  IN NUMBER,
3758     p_init_msg_list                IN VARCHAR2 ,
3759     x_return_status                OUT NOCOPY VARCHAR2,
3760     x_msg_count                    OUT NOCOPY NUMBER,
3761     x_msg_data                     OUT NOCOPY VARCHAR2,
3762     p_srav_tbl                     IN  srav_tbl_type) IS
3763  BEGIN
3764     okc_subclass_pvt.validate_subclass_resps(
3765                 p_api_version,
3766                 p_init_msg_list,
3767                 x_return_status,
3768                 x_msg_count,
3769                 x_msg_data,
3770                 p_srav_tbl);
3771  END validate_subclass_resps;
3772 
3773 PROCEDURE copy_category(
3774     p_api_version                  IN NUMBER,
3775     p_init_msg_list                IN VARCHAR2 ,
3776     x_return_status                OUT NOCOPY VARCHAR2,
3777     x_msg_count                    OUT NOCOPY NUMBER,
3778     x_msg_data                     OUT NOCOPY VARCHAR2,
3779     p_copy_from_scs_code           IN VARCHAR2,
3780     p_new_scs_name                 IN VARCHAR2,
3781     p_new_scs_desc                 IN VARCHAR2,
3782     x_scsv_rec                     OUT NOCOPY scsv_rec_type ) IS
3783 
3784     l_api_name                     CONSTANT VARCHAR2(30) := 'copy_category';
3785     l_return_status		   VARCHAR2(1);
3786 
3787   BEGIN
3788 
3789     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3790 					      p_init_msg_list,
3791 					      '_PUB',
3792                                               x_return_status);
3793 
3794     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3795       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3796     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3797       raise OKC_API.G_EXCEPTION_ERROR;
3798     END IF;
3799 
3800     -- Call user hook for BEFORE
3801 
3802     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3803 
3804     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3805       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3806     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3807       raise OKC_API.G_EXCEPTION_ERROR;
3808     END IF;
3809 
3810 
3811     okc_subclass_pvt.copy_category(
3812                 p_api_version,
3813                 p_init_msg_list,
3814                 x_return_status,
3815                 x_msg_count,
3816                 x_msg_data,
3817                 p_copy_from_scs_code,
3818                 p_new_scs_name,
3819                 p_new_scs_desc,
3820                 x_scsv_rec);
3821 
3822     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3823       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3824     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3825       raise OKC_API.G_EXCEPTION_ERROR;
3826     END IF;
3827 
3828     -- Call user hook for AFTER
3829 
3830     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3831 
3832     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3833       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3834     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3835       raise OKC_API.G_EXCEPTION_ERROR;
3836     END IF;
3837 
3838     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3839 
3840   EXCEPTION
3841     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3842       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3843       (l_api_name,
3844        G_PKG_NAME,
3845        'OKC_API.G_RET_STS_ERROR',
3846        x_msg_count,
3847        x_msg_data,
3848        '_PUB');
3849 
3850     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3851       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3852       (l_api_name,
3853        G_PKG_NAME,
3854        'OKC_API.G_RET_STS_UNEXP_ERROR',
3855        x_msg_count,
3856        x_msg_data,
3857        '_PUB');
3858 
3859     WHEN OTHERS THEN
3860       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3861       (l_api_name,
3862        G_PKG_NAME,
3863        'OTHERS',
3864        x_msg_count,
3865        x_msg_data,
3866        '_PUB');
3867  END copy_category;
3868 END okc_subclass_pub;