DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_QTY_PVT

Source


1 PACKAGE BODY Okl_Qty_Pvt AS
2 /* $Header: OKLSQTYB.pls 115.5 2004/05/24 23:31:44 bvaghela noship $ */
3 
4   ---------------------------------------------------------------------------
5   -- PROCEDURE validate_id
6   ---------------------------------------------------------------------------
7   PROCEDURE validate_id (p_qtyv_rec IN qtyv_rec_type,
8   								x_return_status OUT NOCOPY VARCHAR2) IS
9 
10   BEGIN
11     x_return_status := Okl_Api.G_RET_STS_SUCCESS;
12 	--Check for Null
13     IF p_qtyv_rec.id = Okl_Api.G_MISS_NUM OR
14        p_qtyv_rec.id IS NULL
15     THEN
16 
17       x_return_status := Okl_Api.G_RET_STS_ERROR;
18   	  --set error message in message stack
19 	  Okl_Api.SET_MESSAGE(p_app_name     => G_APP_NAME,
20         	              p_msg_name     =>  G_REQUIRED_VALUE,
21           				  p_token1       => G_COL_NAME_TOKEN,
22 						  p_token1_value => 'id');
23       RAISE G_EXCEPTION_HALT_VALIDATION;
24 
25 	END IF;
26   END validate_id;
27 
28   ---------------------------------------------------------------------------
29   -- PROCEDURE validate_object_version_number
30   ---------------------------------------------------------------------------
31   PROCEDURE validate_object_version_number (p_qtyv_rec IN qtyv_rec_type,
32   								x_return_status OUT NOCOPY VARCHAR2) IS
33 
34   BEGIN
35     x_return_status := Okl_Api.G_RET_STS_SUCCESS;
36 	--Check for Null
37     IF p_qtyv_rec.object_version_number = Okl_Api.G_MISS_NUM OR
38        p_qtyv_rec.object_version_number IS NULL
39     THEN
40 
41       x_return_status := Okl_Api.G_RET_STS_ERROR;
42   	  --set error message in message stack
43 	  Okl_Api.SET_MESSAGE(p_app_name     => G_APP_NAME,
44         	              p_msg_name     => G_REQUIRED_VALUE,
45           				  p_token1       => G_COL_NAME_TOKEN,
46 						  p_token1_value => 'object_version_number');
47       RAISE G_EXCEPTION_HALT_VALIDATION;
48 
49 	END IF;
50   END validate_object_version_number;
51 
52   ---------------------------------------------------------------------------
53   -- PROCEDURE validate_name
54   ---------------------------------------------------------------------------
55   PROCEDURE validate_name (p_qtyv_rec IN qtyv_rec_type,
56   								x_return_status OUT NOCOPY VARCHAR2) IS
57 
58   BEGIN
59     x_return_status := Okl_Api.G_RET_STS_SUCCESS;
60 	--Check for Null
61     IF p_qtyv_rec.name = Okl_Api.G_MISS_CHAR OR
62        p_qtyv_rec.name IS NULL
63     THEN
64 
65       x_return_status := Okl_Api.G_RET_STS_ERROR;
66   	  --set error message in message stack
67 	  Okl_Api.SET_MESSAGE(p_app_name     => G_APP_NAME,
68         	              p_msg_name     =>  G_REQUIRED_VALUE,
69           				  p_token1       => G_COL_NAME_TOKEN,
70 						  p_token1_value => 'name');
71       RAISE G_EXCEPTION_HALT_VALIDATION;
72 
73 	END IF;
74   END validate_name;
75 
76   ---------------------------------------------------------------------------
77   -- PROCEDURE validate_lrg_lse_id
78   ---------------------------------------------------------------------------
79   PROCEDURE validate_lrg_lse_id (p_qtyv_rec IN qtyv_rec_type,
80   								x_return_status OUT NOCOPY VARCHAR2) IS
81 
82    l_dummy_var VARCHAR2(1) := '0';
83 
84    CURSOR l_lrg_lse_id_csr IS
85     SELECT '1'
86 	FROM OKC_LSE_RULE_GROUPS
87 	WHERE lse_id = p_qtyv_rec.lrg_lse_id;
88 
89   BEGIN
90     x_return_status := Okl_Api.G_RET_STS_SUCCESS;
91     IF p_qtyv_rec.lrg_lse_id <> Okl_Api.G_MISS_NUM AND
92        p_qtyv_rec.lrg_lse_id IS NOT NULL
93     THEN
94 
95 	-- Validate Foreign Key
96  	OPEN l_lrg_lse_id_csr;
97 	FETCH l_lrg_lse_id_csr INTO l_dummy_var;
98 	CLOSE l_lrg_lse_id_csr;
99 
100 	IF (l_dummy_var <> '1') THEN
101 	 	x_return_status := Okl_Api.G_RET_STS_ERROR;
102 	    Okl_Api.SET_MESSAGE(p_app_name			=> G_APP_NAME,
103 		 				    p_msg_name			=> G_NO_PARENT_RECORD,
104 							p_token1			=> G_COL_NAME_TOKEN,
105 							p_token1_value		=> 'LRG_LSE_ID_FOR',
106 							p_token2			=> G_CHILD_TABLE_TOKEN,
107 							p_token2_value		=> G_VIEW,
108 							p_token3			=> G_PARENT_TABLE_TOKEN,
109 							p_token3_value		=> 'OKL_QUESTION_TYPES_V');
110 
111 		RAISE G_EXCEPTION_HALT_VALIDATION;
112     END IF;
113 	END IF;
114   END validate_lrg_lse_id;
115 
116   ---------------------------------------------------------------------------
117   -- PROCEDURE validate_lrg_srd_id
118   ---------------------------------------------------------------------------
119   PROCEDURE validate_lrg_srd_id (p_qtyv_rec IN qtyv_rec_type,
120   								x_return_status OUT NOCOPY VARCHAR2) IS
121 
122    l_dummy_var VARCHAR2(1) := '0';
123 
124    CURSOR l_lrg_srd_id_csr IS
125     SELECT '1'
126 	FROM OKC_LSE_RULE_GROUPS
127 	WHERE srd_id = p_qtyv_rec.lrg_srd_id;
128 
129   BEGIN
130     x_return_status := Okl_Api.G_RET_STS_SUCCESS;
131     IF p_qtyv_rec.lrg_srd_id <> Okl_Api.G_MISS_NUM AND
132        p_qtyv_rec.lrg_srd_id IS NOT NULL
133     THEN
134 
135 	-- Validate Foreign Key
136  	OPEN l_lrg_srd_id_csr;
137 	FETCH l_lrg_srd_id_csr INTO l_dummy_var;
138 	CLOSE l_lrg_srd_id_csr;
139 
140 	IF (l_dummy_var <> '1') THEN
141 	 	x_return_status := Okl_Api.G_RET_STS_ERROR;
142 	    Okl_Api.SET_MESSAGE(p_app_name			=> G_APP_NAME,
143 		 				    p_msg_name			=> G_NO_PARENT_RECORD,
144 							p_token1			=> G_COL_NAME_TOKEN,
145 							p_token1_value		=> 'LRG_SRD_ID_FOR',
146 							p_token2			=> G_CHILD_TABLE_TOKEN,
147 							p_token2_value		=> G_VIEW,
148 							p_token3			=> G_PARENT_TABLE_TOKEN,
149 							p_token3_value		=> 'OKL_QUESTION_TYPES_V');
150 
151 		RAISE G_EXCEPTION_HALT_VALIDATION;
152     END IF;
153 	END IF;
154   END validate_lrg_srd_id;
155 
156   ---------------------------------------------------------------------------
157   -- PROCEDURE validate_srd_id
158   ---------------------------------------------------------------------------
159   PROCEDURE validate_srd_id (p_qtyv_rec IN qtyv_rec_type,
160   								x_return_status OUT NOCOPY VARCHAR2) IS
161 
162    l_dummy_var VARCHAR2(1) := '0';
163 
164    CURSOR l_srd_id_csr IS
165     SELECT '1'
166 	FROM OKC_SUBCLASS_RG_DEFS
167 	WHERE id = p_qtyv_rec.srd_id;
168 
169   BEGIN
170     x_return_status := Okl_Api.G_RET_STS_SUCCESS;
171 
172     IF p_qtyv_rec.srd_id <> Okl_Api.G_MISS_NUM AND
173        p_qtyv_rec.srd_id IS NOT NULL
174     THEN
175 
176 	-- Validate Foreign Key
177  	OPEN l_srd_id_csr;
178 	FETCH l_srd_id_csr INTO l_dummy_var;
179 	CLOSE l_srd_id_csr;
180 
181 	IF (l_dummy_var <> '1') THEN
182 	 	x_return_status := Okl_Api.G_RET_STS_ERROR;
183 	    Okl_Api.SET_MESSAGE(p_app_name			=> G_APP_NAME,
184 		 				    p_msg_name			=> G_NO_PARENT_RECORD,
185 							p_token1			=> G_COL_NAME_TOKEN,
186 							p_token1_value		=> 'SRD_ID_FOR',
187 							p_token2			=> G_CHILD_TABLE_TOKEN,
188 							p_token2_value		=> G_VIEW,
189 							p_token3			=> G_PARENT_TABLE_TOKEN,
190 							p_token3_value		=> 'OKL_QUESTION_TYPES_V');
191 
192 		RAISE G_EXCEPTION_HALT_VALIDATION;
193     END IF;
194 	END IF;
195   END validate_srd_id;
196 
197   ---------------------------------------------------------------------------
198   -- PROCEDURE validate_rgr_rgd_code
199   ---------------------------------------------------------------------------
200   PROCEDURE validate_rgr_rgd_code (p_qtyv_rec IN qtyv_rec_type,
201   								x_return_status OUT NOCOPY VARCHAR2) IS
202 
203    l_dummy_var VARCHAR2(1) := '0';
204 
205    CURSOR l_rgr_rgd_code_csr IS
206     SELECT '1'
207 	FROM OKC_RG_DEF_RULES
208 	WHERE rgd_code = p_qtyv_rec.rgr_rgd_code;
209 
210   BEGIN
211     x_return_status := Okl_Api.G_RET_STS_SUCCESS;
212 
213     IF p_qtyv_rec.rgr_rgd_code <> Okl_Api.G_MISS_CHAR AND
214        p_qtyv_rec.rgr_rgd_code IS NOT NULL
215     THEN
216 
217 	-- Validate Foreign Key
218  	OPEN l_rgr_rgd_code_csr;
219 	FETCH l_rgr_rgd_code_csr INTO l_dummy_var;
220 	CLOSE l_rgr_rgd_code_csr;
221 
222 	IF (l_dummy_var <> '1') THEN
223 	 	x_return_status := Okl_Api.G_RET_STS_ERROR;
224 	    Okl_Api.SET_MESSAGE(p_app_name			=> G_APP_NAME,
225 		 				    p_msg_name			=> G_NO_PARENT_RECORD,
226 							p_token1			=> G_COL_NAME_TOKEN,
227 							p_token1_value		=> 'RGR_RGD_CODE_FOR',
228 							p_token2			=> G_CHILD_TABLE_TOKEN,
229 							p_token2_value		=> G_VIEW,
230 							p_token3			=> G_PARENT_TABLE_TOKEN,
231 							p_token3_value		=> 'OKL_QUESTION_TYPES_V');
232 
233 		RAISE G_EXCEPTION_HALT_VALIDATION;
234     END IF;
235 	END IF;
236   END validate_rgr_rgd_code;
237 
238   ---------------------------------------------------------------------------
239   -- PROCEDURE validate_rdr_rdf_code
240   ---------------------------------------------------------------------------
241   PROCEDURE validate_rdr_rdf_code (p_qtyv_rec IN qtyv_rec_type,
242   								x_return_status OUT NOCOPY VARCHAR2) IS
243 
244    l_dummy_var VARCHAR2(1) := '0';
245 
246    CURSOR l_rdr_rdf_code_csr IS
247     SELECT '1'
248 	FROM OKC_RG_DEF_RULES
249 	WHERE rdf_code = p_qtyv_rec.rdr_rdf_code;
250 
251   BEGIN
252     x_return_status := Okl_Api.G_RET_STS_SUCCESS;
253 
254     IF p_qtyv_rec.rdr_rdf_code <> Okl_Api.G_MISS_CHAR AND
255        p_qtyv_rec.rdr_rdf_code IS NOT NULL
256     THEN
257 
258 	-- Validate Foreign Key
259  	OPEN l_rdr_rdf_code_csr;
260 	FETCH l_rdr_rdf_code_csr INTO l_dummy_var;
261 	CLOSE l_rdr_rdf_code_csr;
262 
263 	IF (l_dummy_var <> '1') THEN
264 	 	x_return_status := Okl_Api.G_RET_STS_ERROR;
265 	    Okl_Api.SET_MESSAGE(p_app_name			=> G_APP_NAME,
266 		 				    p_msg_name			=> G_NO_PARENT_RECORD,
267 							p_token1			=> G_COL_NAME_TOKEN,
268 							p_token1_value		=> 'RDR_RDF_CODE_FOR',
269 							p_token2			=> G_CHILD_TABLE_TOKEN,
270 							p_token2_value		=> G_VIEW,
271 							p_token3			=> G_PARENT_TABLE_TOKEN,
272 							p_token3_value		=> 'OKL_QUESTION_TYPES_V');
273 
274 		RAISE G_EXCEPTION_HALT_VALIDATION;
275     END IF;
276 	END IF;
277   END validate_rdr_rdf_code;
278 
279   ---------------------------------------------------------------------------
280   -- PROCEDURE Is_Unique
281   -- Post-Generation Change
282   -- By RDRAGUIL on 24-APR-2001
283   ---------------------------------------------------------------------------
284   FUNCTION Is_Unique (
285     p_qtyv_rec IN qtyv_rec_type
286   ) RETURN VARCHAR2 IS
287 
288     CURSOR l_qtyv_csr IS
289                   SELECT 'x'
290                   FROM   OKL_QUESTION_TYPES_V
291                   WHERE  name = p_qtyv_rec.name
292                   AND    id   <> nvl (p_qtyv_rec.id, -99999);
293 
294     l_return_status     VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
295     l_dummy             VARCHAR2(1);
296     l_found             BOOLEAN;
297 
298   BEGIN
299 
300     -- check for unique NAME
301     OPEN     l_qtyv_csr;
302     FETCH    l_qtyv_csr INTO l_dummy;
303           l_found  := l_qtyv_csr%FOUND;
304           CLOSE    l_qtyv_csr;
305 
306     IF (l_found) THEN
307 
308       -- display error message
309       OKL_API.set_message(
310         p_app_name        => G_APP_NAME,
311         p_msg_name        => G_NOT_SAME,
312         p_token1          => 'NAME',
313         p_token1_value    => p_qtyv_rec.name);
314 
315       -- notify caller of an error
316       l_return_status := OKL_API.G_RET_STS_ERROR;
317 
318     END IF;
319 
320     -- return status to the caller
321     RETURN l_return_status;
322 
323   EXCEPTION
324     when OTHERS then
325       -- display error message
326       OKL_API.set_message(
327         p_app_name        => G_APP_NAME,
328         p_msg_name        => G_UNEXPECTED_ERROR,
329         p_token1          => G_SQLCODE_TOKEN,
330         p_token1_value    => SQLCODE,
331         p_token2          => G_SQLERRM_TOKEN,
332         p_token2_value    => SQLERRM);
333       -- notify caller of an unexpected error
334       l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
335       -- verify the cursor is closed
336       IF l_qtyv_csr%ISOPEN THEN
337          CLOSE l_qtyv_csr;
338       END IF;
339       -- return status to the caller
340       RETURN l_return_status;
341 
342   END Is_Unique;
343 
344   ---------------------------------------------------------------------------
345   -- FUNCTION get_seq_id
346   ---------------------------------------------------------------------------
347   FUNCTION get_seq_id RETURN NUMBER IS
348   BEGIN
349     RETURN(Okc_P_Util.raw_to_number(sys_guid()));
350   END get_seq_id;
351 
352   ---------------------------------------------------------------------------
353   -- PROCEDURE qc
354   ---------------------------------------------------------------------------
355   PROCEDURE qc IS
356   BEGIN
357     NULL;
358   END qc;
359 
360   ---------------------------------------------------------------------------
361   -- PROCEDURE change_version
362   ---------------------------------------------------------------------------
363   PROCEDURE change_version IS
364   BEGIN
365     NULL;
366   END change_version;
367 
368   ---------------------------------------------------------------------------
369   -- PROCEDURE api_copy
370   ---------------------------------------------------------------------------
371   PROCEDURE api_copy IS
372   BEGIN
373     NULL;
374   END api_copy;
375 
376   ---------------------------------------------------------------------------
377   -- PROCEDURE add_language
378   ---------------------------------------------------------------------------
379   PROCEDURE add_language IS
380   BEGIN
381     DELETE FROM OKL_QUESTION_TYPES_TL T
382      WHERE NOT EXISTS (
383         SELECT NULL
384           FROM OKL_QUESTION_TYPES_B B  --fixed bug 3321017 by kmotepal
385          WHERE B.ID = T.ID
386         );
387 
388     UPDATE OKL_QUESTION_TYPES_TL T SET (
389         NAME,
390         DESCRIPTION) = (SELECT
391                                   B.NAME,
392                                   B.DESCRIPTION
393                                 FROM OKL_QUESTION_TYPES_TL B
394                                WHERE B.ID = T.ID
395                                  AND B.LANGUAGE = T.SOURCE_LANG)
396       WHERE (
397               T.ID,
398               T.LANGUAGE)
399           IN (SELECT
400                   SUBT.ID,
401                   SUBT.LANGUAGE
402                 FROM OKL_QUESTION_TYPES_TL SUBB, OKL_QUESTION_TYPES_TL SUBT
403                WHERE SUBB.ID = SUBT.ID
404                  AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
405                  AND (SUBB.NAME <> SUBT.NAME
406                       OR SUBB.DESCRIPTION <> SUBT.DESCRIPTION
407                       OR (SUBB.DESCRIPTION IS NULL AND SUBT.DESCRIPTION IS NOT NULL)
408                       OR (SUBB.DESCRIPTION IS NOT NULL AND SUBT.DESCRIPTION IS NULL)
409               ));
410 
411     INSERT INTO OKL_QUESTION_TYPES_TL (
412         ID,
413         LANGUAGE,
414         SOURCE_LANG,
415         SFWT_FLAG,
416         NAME,
417         DESCRIPTION,
418         CREATED_BY,
419         CREATION_DATE,
420         LAST_UPDATED_BY,
421         LAST_UPDATE_DATE,
422         LAST_UPDATE_LOGIN)
423       SELECT
424             B.ID,
425             L.LANGUAGE_CODE,
426             B.SOURCE_LANG,
427             B.SFWT_FLAG,
428             B.NAME,
429             B.DESCRIPTION,
430             B.CREATED_BY,
431             B.CREATION_DATE,
432             B.LAST_UPDATED_BY,
433             B.LAST_UPDATE_DATE,
434             B.LAST_UPDATE_LOGIN
435         FROM OKL_QUESTION_TYPES_TL B, FND_LANGUAGES L
436        WHERE L.INSTALLED_FLAG IN ('I', 'B')
437          AND B.LANGUAGE = USERENV('LANG')
438          AND NOT EXISTS(
439                     SELECT NULL
440                       FROM OKL_QUESTION_TYPES_TL T
441                      WHERE T.ID = B.ID
442                        AND T.LANGUAGE = L.LANGUAGE_CODE
443                     );
444 
445   END add_language;
446 
447   ---------------------------------------------------------------------------
448   -- FUNCTION get_rec for: OKL_QUESTION_TYPES_B
449   ---------------------------------------------------------------------------
450   FUNCTION get_rec (
451     p_qty_rec                      IN qty_rec_type,
452     x_no_data_found                OUT NOCOPY BOOLEAN
453   ) RETURN qty_rec_type IS
454     CURSOR qty_pk_csr (p_id                 IN NUMBER) IS
455     SELECT
456             ID,
457             SRD_ID,
458             LRG_LSE_ID,
459             LRG_SRD_ID,
460             RDR_RDF_CODE,
461             RGR_RGD_CODE,
462             OBJECT_VERSION_NUMBER,
463             ATTRIBUTE_CATEGORY,
464             ATTRIBUTE1,
465             ATTRIBUTE2,
466             ATTRIBUTE3,
467             ATTRIBUTE4,
468             ATTRIBUTE5,
469             ATTRIBUTE6,
470             ATTRIBUTE7,
471             ATTRIBUTE8,
472             ATTRIBUTE9,
473             ATTRIBUTE10,
474             ATTRIBUTE11,
475             ATTRIBUTE12,
476             ATTRIBUTE13,
477             ATTRIBUTE14,
478             ATTRIBUTE15,
479             CREATED_BY,
480             CREATION_DATE,
481             LAST_UPDATED_BY,
482             LAST_UPDATE_DATE,
483             LAST_UPDATE_LOGIN
484       FROM Okl_Question_Types_B
485      WHERE okl_question_types_b.id = p_id;
486     l_qty_pk                       qty_pk_csr%ROWTYPE;
487     l_qty_rec                      qty_rec_type;
488   BEGIN
489     x_no_data_found := TRUE;
490     -- Get current database values
491     OPEN qty_pk_csr (p_qty_rec.id);
492     FETCH qty_pk_csr INTO
493               l_qty_rec.ID,
494               l_qty_rec.SRD_ID,
495               l_qty_rec.LRG_LSE_ID,
496               l_qty_rec.LRG_SRD_ID,
497               l_qty_rec.RDR_RDF_CODE,
498               l_qty_rec.RGR_RGD_CODE,
499               l_qty_rec.OBJECT_VERSION_NUMBER,
500               l_qty_rec.ATTRIBUTE_CATEGORY,
501               l_qty_rec.ATTRIBUTE1,
502               l_qty_rec.ATTRIBUTE2,
503               l_qty_rec.ATTRIBUTE3,
504               l_qty_rec.ATTRIBUTE4,
505               l_qty_rec.ATTRIBUTE5,
506               l_qty_rec.ATTRIBUTE6,
507               l_qty_rec.ATTRIBUTE7,
508               l_qty_rec.ATTRIBUTE8,
509               l_qty_rec.ATTRIBUTE9,
510               l_qty_rec.ATTRIBUTE10,
511               l_qty_rec.ATTRIBUTE11,
512               l_qty_rec.ATTRIBUTE12,
513               l_qty_rec.ATTRIBUTE13,
514               l_qty_rec.ATTRIBUTE14,
515               l_qty_rec.ATTRIBUTE15,
516               l_qty_rec.CREATED_BY,
517               l_qty_rec.CREATION_DATE,
518               l_qty_rec.LAST_UPDATED_BY,
519               l_qty_rec.LAST_UPDATE_DATE,
520               l_qty_rec.LAST_UPDATE_LOGIN;
521     x_no_data_found := qty_pk_csr%NOTFOUND;
522     CLOSE qty_pk_csr;
523     RETURN(l_qty_rec);
524   END get_rec;
525 
526   FUNCTION get_rec (
527     p_qty_rec                      IN qty_rec_type
528   ) RETURN qty_rec_type IS
529     l_row_notfound                 BOOLEAN := TRUE;
530   BEGIN
531     RETURN(get_rec(p_qty_rec, l_row_notfound));
532   END get_rec;
533   ---------------------------------------------------------------------------
534   -- FUNCTION get_rec for: OKL_QUESTION_TYPES_TL
535   ---------------------------------------------------------------------------
536   FUNCTION get_rec (
537     p_okl_question_types_tl_rec    IN okl_question_types_tl_rec_type,
538     x_no_data_found                OUT NOCOPY BOOLEAN
539   ) RETURN okl_question_types_tl_rec_type IS
540     CURSOR okl_question_types_tl_pk_csr (p_id                 IN NUMBER,
541                                          p_language           IN VARCHAR2) IS
542     SELECT
543             ID,
544             LANGUAGE,
545             SOURCE_LANG,
546             SFWT_FLAG,
547             NAME,
548             DESCRIPTION,
549             CREATED_BY,
550             CREATION_DATE,
551             LAST_UPDATED_BY,
552             LAST_UPDATE_DATE,
553             LAST_UPDATE_LOGIN
554       FROM Okl_Question_Types_Tl
555      WHERE okl_question_types_tl.id = p_id
556        AND okl_question_types_tl.LANGUAGE = p_language;
557     l_okl_question_types_tl_pk     okl_question_types_tl_pk_csr%ROWTYPE;
558     l_okl_question_types_tl_rec    okl_question_types_tl_rec_type;
559   BEGIN
560     x_no_data_found := TRUE;
561     -- Get current database values
562     OPEN okl_question_types_tl_pk_csr (p_okl_question_types_tl_rec.id,
563                                        p_okl_question_types_tl_rec.LANGUAGE);
564     FETCH okl_question_types_tl_pk_csr INTO
565               l_okl_question_types_tl_rec.ID,
566               l_okl_question_types_tl_rec.LANGUAGE,
567               l_okl_question_types_tl_rec.SOURCE_LANG,
568               l_okl_question_types_tl_rec.SFWT_FLAG,
569               l_okl_question_types_tl_rec.NAME,
570               l_okl_question_types_tl_rec.DESCRIPTION,
571               l_okl_question_types_tl_rec.CREATED_BY,
572               l_okl_question_types_tl_rec.CREATION_DATE,
573               l_okl_question_types_tl_rec.LAST_UPDATED_BY,
574               l_okl_question_types_tl_rec.LAST_UPDATE_DATE,
575               l_okl_question_types_tl_rec.LAST_UPDATE_LOGIN;
576     x_no_data_found := okl_question_types_tl_pk_csr%NOTFOUND;
577     CLOSE okl_question_types_tl_pk_csr;
578     RETURN(l_okl_question_types_tl_rec);
579   END get_rec;
580 
581   FUNCTION get_rec (
582     p_okl_question_types_tl_rec    IN okl_question_types_tl_rec_type
583   ) RETURN okl_question_types_tl_rec_type IS
584     l_row_notfound                 BOOLEAN := TRUE;
585   BEGIN
586     RETURN(get_rec(p_okl_question_types_tl_rec, l_row_notfound));
587   END get_rec;
588   ---------------------------------------------------------------------------
589   -- FUNCTION get_rec for: OKL_QUESTION_TYPES_V
590   ---------------------------------------------------------------------------
591   FUNCTION get_rec (
592     p_qtyv_rec                     IN qtyv_rec_type,
593     x_no_data_found                OUT NOCOPY BOOLEAN
594   ) RETURN qtyv_rec_type IS
595     CURSOR okl_qtyv_pk_csr (p_id                 IN NUMBER) IS
596     SELECT
597             ID,
598             OBJECT_VERSION_NUMBER,
599             SFWT_FLAG,
600             RGR_RGD_CODE,
601             SRD_ID,
602             LRG_LSE_ID,
603             RDR_RDF_CODE,
604             LRG_SRD_ID,
605             NAME,
606             DESCRIPTION,
607             ATTRIBUTE_CATEGORY,
608             ATTRIBUTE1,
609             ATTRIBUTE2,
610             ATTRIBUTE3,
611             ATTRIBUTE4,
612             ATTRIBUTE5,
613             ATTRIBUTE6,
614             ATTRIBUTE7,
615             ATTRIBUTE8,
616             ATTRIBUTE9,
617             ATTRIBUTE10,
618             ATTRIBUTE11,
619             ATTRIBUTE12,
620             ATTRIBUTE13,
621             ATTRIBUTE14,
622             ATTRIBUTE15,
623             CREATED_BY,
624             CREATION_DATE,
625             LAST_UPDATED_BY,
626             LAST_UPDATE_DATE,
627             LAST_UPDATE_LOGIN
628       FROM Okl_Question_Types_V
629      WHERE okl_question_types_v.id = p_id;
630     l_okl_qtyv_pk                  okl_qtyv_pk_csr%ROWTYPE;
631     l_qtyv_rec                     qtyv_rec_type;
632   BEGIN
633     x_no_data_found := TRUE;
634     -- Get current database values
635     OPEN okl_qtyv_pk_csr (p_qtyv_rec.id);
636     FETCH okl_qtyv_pk_csr INTO
637               l_qtyv_rec.ID,
638               l_qtyv_rec.OBJECT_VERSION_NUMBER,
639               l_qtyv_rec.SFWT_FLAG,
640               l_qtyv_rec.RGR_RGD_CODE,
641               l_qtyv_rec.SRD_ID,
642               l_qtyv_rec.LRG_LSE_ID,
643               l_qtyv_rec.RDR_RDF_CODE,
644               l_qtyv_rec.LRG_SRD_ID,
645               l_qtyv_rec.NAME,
646               l_qtyv_rec.DESCRIPTION,
647               l_qtyv_rec.ATTRIBUTE_CATEGORY,
648               l_qtyv_rec.ATTRIBUTE1,
649               l_qtyv_rec.ATTRIBUTE2,
650               l_qtyv_rec.ATTRIBUTE3,
651               l_qtyv_rec.ATTRIBUTE4,
652               l_qtyv_rec.ATTRIBUTE5,
653               l_qtyv_rec.ATTRIBUTE6,
654               l_qtyv_rec.ATTRIBUTE7,
655               l_qtyv_rec.ATTRIBUTE8,
656               l_qtyv_rec.ATTRIBUTE9,
657               l_qtyv_rec.ATTRIBUTE10,
658               l_qtyv_rec.ATTRIBUTE11,
659               l_qtyv_rec.ATTRIBUTE12,
660               l_qtyv_rec.ATTRIBUTE13,
661               l_qtyv_rec.ATTRIBUTE14,
662               l_qtyv_rec.ATTRIBUTE15,
663               l_qtyv_rec.CREATED_BY,
664               l_qtyv_rec.CREATION_DATE,
665               l_qtyv_rec.LAST_UPDATED_BY,
666               l_qtyv_rec.LAST_UPDATE_DATE,
667               l_qtyv_rec.LAST_UPDATE_LOGIN;
668     x_no_data_found := okl_qtyv_pk_csr%NOTFOUND;
669     CLOSE okl_qtyv_pk_csr;
670     RETURN(l_qtyv_rec);
671   END get_rec;
672 
673   FUNCTION get_rec (
674     p_qtyv_rec                     IN qtyv_rec_type
675   ) RETURN qtyv_rec_type IS
676     l_row_notfound                 BOOLEAN := TRUE;
677   BEGIN
678     RETURN(get_rec(p_qtyv_rec, l_row_notfound));
679   END get_rec;
680 
681   ----------------------------------------------------------
682   -- FUNCTION null_out_defaults for: OKL_QUESTION_TYPES_V --
683   ----------------------------------------------------------
684   FUNCTION null_out_defaults (
685     p_qtyv_rec	IN qtyv_rec_type
686   ) RETURN qtyv_rec_type IS
687     l_qtyv_rec	qtyv_rec_type := p_qtyv_rec;
688   BEGIN
689     IF (l_qtyv_rec.object_version_number = okl_api.G_MISS_NUM) THEN
690       l_qtyv_rec.object_version_number := NULL;
691     END IF;
692     IF (l_qtyv_rec.sfwt_flag = okl_api.G_MISS_CHAR) THEN
693       l_qtyv_rec.sfwt_flag := NULL;
694     END IF;
695     IF (l_qtyv_rec.rgr_rgd_code = okl_api.G_MISS_CHAR) THEN
696       l_qtyv_rec.rgr_rgd_code := NULL;
697     END IF;
698     IF (l_qtyv_rec.srd_id = okl_api.G_MISS_NUM) THEN
699       l_qtyv_rec.srd_id := NULL;
700     END IF;
701     IF (l_qtyv_rec.lrg_lse_id = okl_api.G_MISS_NUM) THEN
702       l_qtyv_rec.lrg_lse_id := NULL;
703     END IF;
704     IF (l_qtyv_rec.rdr_rdf_code = okl_api.G_MISS_CHAR) THEN
705       l_qtyv_rec.rdr_rdf_code := NULL;
706     END IF;
707     IF (l_qtyv_rec.lrg_srd_id = okl_api.G_MISS_NUM) THEN
708       l_qtyv_rec.lrg_srd_id := NULL;
709     END IF;
710     IF (l_qtyv_rec.name = okl_api.G_MISS_CHAR) THEN
711       l_qtyv_rec.name := NULL;
712     END IF;
713     IF (l_qtyv_rec.description = okl_api.G_MISS_CHAR) THEN
714       l_qtyv_rec.description := NULL;
715     END IF;
716     IF (l_qtyv_rec.attribute_category = okl_api.G_MISS_CHAR) THEN
717       l_qtyv_rec.attribute_category := NULL;
718     END IF;
719     IF (l_qtyv_rec.attribute1 = okl_api.G_MISS_CHAR) THEN
720       l_qtyv_rec.attribute1 := NULL;
721     END IF;
722     IF (l_qtyv_rec.attribute2 = okl_api.G_MISS_CHAR) THEN
723       l_qtyv_rec.attribute2 := NULL;
724     END IF;
725     IF (l_qtyv_rec.attribute3 = okl_api.G_MISS_CHAR) THEN
726       l_qtyv_rec.attribute3 := NULL;
727     END IF;
728     IF (l_qtyv_rec.attribute4 = okl_api.G_MISS_CHAR) THEN
729       l_qtyv_rec.attribute4 := NULL;
730     END IF;
731     IF (l_qtyv_rec.attribute5 = okl_api.G_MISS_CHAR) THEN
732       l_qtyv_rec.attribute5 := NULL;
733     END IF;
734     IF (l_qtyv_rec.attribute6 = okl_api.G_MISS_CHAR) THEN
735       l_qtyv_rec.attribute6 := NULL;
736     END IF;
737     IF (l_qtyv_rec.attribute7 = okl_api.G_MISS_CHAR) THEN
738       l_qtyv_rec.attribute7 := NULL;
739     END IF;
740     IF (l_qtyv_rec.attribute8 = okl_api.G_MISS_CHAR) THEN
741       l_qtyv_rec.attribute8 := NULL;
742     END IF;
743     IF (l_qtyv_rec.attribute9 = okl_api.G_MISS_CHAR) THEN
744       l_qtyv_rec.attribute9 := NULL;
745     END IF;
746     IF (l_qtyv_rec.attribute10 = okl_api.G_MISS_CHAR) THEN
747       l_qtyv_rec.attribute10 := NULL;
748     END IF;
749     IF (l_qtyv_rec.attribute11 = okl_api.G_MISS_CHAR) THEN
750       l_qtyv_rec.attribute11 := NULL;
751     END IF;
752     IF (l_qtyv_rec.attribute12 = okl_api.G_MISS_CHAR) THEN
753       l_qtyv_rec.attribute12 := NULL;
754     END IF;
755     IF (l_qtyv_rec.attribute13 = okl_api.G_MISS_CHAR) THEN
756       l_qtyv_rec.attribute13 := NULL;
757     END IF;
758     IF (l_qtyv_rec.attribute14 = okl_api.G_MISS_CHAR) THEN
759       l_qtyv_rec.attribute14 := NULL;
760     END IF;
761     IF (l_qtyv_rec.attribute15 = okl_api.G_MISS_CHAR) THEN
762       l_qtyv_rec.attribute15 := NULL;
763     END IF;
764     IF (l_qtyv_rec.created_by = okl_api.G_MISS_NUM) THEN
765       l_qtyv_rec.created_by := NULL;
766     END IF;
767     IF (l_qtyv_rec.creation_date = okl_api.G_MISS_DATE) THEN
768       l_qtyv_rec.creation_date := NULL;
769     END IF;
770     IF (l_qtyv_rec.last_updated_by = okl_api.G_MISS_NUM) THEN
771       l_qtyv_rec.last_updated_by := NULL;
772     END IF;
773     IF (l_qtyv_rec.last_update_date = okl_api.G_MISS_DATE) THEN
774       l_qtyv_rec.last_update_date := NULL;
775     END IF;
776     IF (l_qtyv_rec.last_update_login = okl_api.G_MISS_NUM) THEN
777       l_qtyv_rec.last_update_login := NULL;
778     END IF;
779     RETURN(l_qtyv_rec);
780   END null_out_defaults;
781   ---------------------------------------------------------------------------
782   -- PROCEDURE Validate_Attributes
783   ---------------------------------------------------------------------------
784   --------------------------------------------------
785   -- Validate_Attributes for:OKL_QUESTION_TYPES_V --
786   --------------------------------------------------
787   FUNCTION Validate_Attributes (
788     p_qtyv_rec IN  qtyv_rec_type
789   ) RETURN VARCHAR2 IS
790     l_return_status	VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
791 	-- TAPI postgen 05/23/2001
792     x_return_status	VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
793 	-- End TAPI postgen 05/23/2001
794   BEGIN
795 	-- TAPI postgen 05/23/2001
796     validate_id(p_qtyv_rec, x_return_status);
797   	IF (x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
798       IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN  -- need to leave
799         l_return_status := x_return_status;
800         RAISE G_EXCEPTION_HALT_VALIDATION;
801       ELSE
802         l_return_status := x_return_status;   -- record that there was an error
803       END IF;
804     END IF;
805 
806     validate_object_version_number(p_qtyv_rec, x_return_status);
807   	IF (x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
808       IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN  -- need to leave
809         l_return_status := x_return_status;
810         RAISE G_EXCEPTION_HALT_VALIDATION;
811       ELSE
812         l_return_status := x_return_status;   -- record that there was an error
813       END IF;
814     END IF;
815 
816     validate_name(p_qtyv_rec, x_return_status);
817   	IF (x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
818       IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN  -- need to leave
819         l_return_status := x_return_status;
820         RAISE G_EXCEPTION_HALT_VALIDATION;
821       ELSE
822         l_return_status := x_return_status;   -- record that there was an error
823       END IF;
824     END IF;
825 
826     validate_lrg_lse_id(p_qtyv_rec, x_return_status);
827   	IF (x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
828       IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN  -- need to leave
829         l_return_status := x_return_status;
830         RAISE G_EXCEPTION_HALT_VALIDATION;
831       ELSE
832         l_return_status := x_return_status;   -- record that there was an error
833       END IF;
834     END IF;
835 
836     validate_lrg_srd_id(p_qtyv_rec, x_return_status);
837   	IF (x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
838       IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN  -- need to leave
839         l_return_status := x_return_status;
840         RAISE G_EXCEPTION_HALT_VALIDATION;
841       ELSE
842         l_return_status := x_return_status;   -- record that there was an error
843       END IF;
844     END IF;
845 
846     validate_rgr_rgd_code(p_qtyv_rec, x_return_status);
847   	IF (x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
848       IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN  -- need to leave
849         l_return_status := x_return_status;
850         RAISE G_EXCEPTION_HALT_VALIDATION;
851       ELSE
852         l_return_status := x_return_status;   -- record that there was an error
853       END IF;
854     END IF;
855 
856     validate_rdr_rdf_code(p_qtyv_rec, x_return_status);
857   	IF (x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
858       IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN  -- need to leave
859         l_return_status := x_return_status;
860         RAISE G_EXCEPTION_HALT_VALIDATION;
861       ELSE
862         l_return_status := x_return_status;   -- record that there was an error
863       END IF;
864     END IF;
865 
866     validate_srd_id(p_qtyv_rec, x_return_status);
867   	IF (x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
868       IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN  -- need to leave
869         l_return_status := x_return_status;
870         RAISE G_EXCEPTION_HALT_VALIDATION;
871       ELSE
872         l_return_status := x_return_status;   -- record that there was an error
873       END IF;
874     END IF;
875 
876 	-- End TAPI postgen 05/23/2001
877 
878     RETURN(l_return_status);
879   END Validate_Attributes;
880 
881   ---------------------------------------------------------------------------
882   -- PROCEDURE Validate_Record
883   ---------------------------------------------------------------------------
884   ----------------------------------------------
885   -- Validate_Record for:OKL_QUESTION_TYPES_V --
886   ----------------------------------------------
887   FUNCTION Validate_Record (
888     p_qtyv_rec IN qtyv_rec_type
889   ) RETURN VARCHAR2 IS
890     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
891     x_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
892 
893   BEGIN
894 
895     -- call each record-level validation
896     l_return_status := is_unique (p_qtyv_rec);
897 
898     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
899        IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
900           x_return_status := l_return_status;
901        END IF;
902     END IF;
903 
904     RETURN x_return_status;
905 
906 
907   EXCEPTION
908 
909     when OTHERS then
910       -- display error message
911       OKL_API.set_message(
912         p_app_name        => G_APP_NAME,
913         p_msg_name        => G_UNEXPECTED_ERROR,
914         p_token1          => G_SQLCODE_TOKEN,
915         p_token1_value    => SQLCODE,
916         p_token2          => G_SQLERRM_TOKEN,
917         p_token2_value    => SQLERRM);
918       -- notify caller of an unexpected error
919       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
920       -- return status to the caller
921       RETURN x_return_status;
922 
923   END Validate_Record;
924 
925   ---------------------------------------------------------------------------
926   -- PROCEDURE Migrate
927   ---------------------------------------------------------------------------
928   PROCEDURE migrate (
929     p_from	IN qtyv_rec_type,
930     p_to	OUT NOCOPY qty_rec_type
931   ) IS
932   BEGIN
933     p_to.id := p_from.id;
934     p_to.srd_id := p_from.srd_id;
935     p_to.lrg_lse_id := p_from.lrg_lse_id;
936     p_to.lrg_srd_id := p_from.lrg_srd_id;
937     p_to.rdr_rdf_code := p_from.rdr_rdf_code;
938     p_to.rgr_rgd_code := p_from.rgr_rgd_code;
939     p_to.object_version_number := p_from.object_version_number;
940     p_to.attribute_category := p_from.attribute_category;
941     p_to.attribute1 := p_from.attribute1;
942     p_to.attribute2 := p_from.attribute2;
943     p_to.attribute3 := p_from.attribute3;
944     p_to.attribute4 := p_from.attribute4;
945     p_to.attribute5 := p_from.attribute5;
946     p_to.attribute6 := p_from.attribute6;
947     p_to.attribute7 := p_from.attribute7;
948     p_to.attribute8 := p_from.attribute8;
949     p_to.attribute9 := p_from.attribute9;
950     p_to.attribute10 := p_from.attribute10;
951     p_to.attribute11 := p_from.attribute11;
952     p_to.attribute12 := p_from.attribute12;
953     p_to.attribute13 := p_from.attribute13;
954     p_to.attribute14 := p_from.attribute14;
955     p_to.attribute15 := p_from.attribute15;
956     p_to.created_by := p_from.created_by;
957     p_to.creation_date := p_from.creation_date;
958     p_to.last_updated_by := p_from.last_updated_by;
959     p_to.last_update_date := p_from.last_update_date;
960     p_to.last_update_login := p_from.last_update_login;
961   END migrate;
962   PROCEDURE migrate (
963     p_from	IN qty_rec_type,
964     p_to	OUT NOCOPY qtyv_rec_type
965   ) IS
966   BEGIN
967     p_to.id := p_from.id;
968     p_to.srd_id := p_from.srd_id;
969     p_to.lrg_lse_id := p_from.lrg_lse_id;
970     p_to.lrg_srd_id := p_from.lrg_srd_id;
971     p_to.rdr_rdf_code := p_from.rdr_rdf_code;
972     p_to.rgr_rgd_code := p_from.rgr_rgd_code;
973     p_to.object_version_number := p_from.object_version_number;
974     p_to.attribute_category := p_from.attribute_category;
975     p_to.attribute1 := p_from.attribute1;
976     p_to.attribute2 := p_from.attribute2;
977     p_to.attribute3 := p_from.attribute3;
978     p_to.attribute4 := p_from.attribute4;
979     p_to.attribute5 := p_from.attribute5;
980     p_to.attribute6 := p_from.attribute6;
981     p_to.attribute7 := p_from.attribute7;
982     p_to.attribute8 := p_from.attribute8;
983     p_to.attribute9 := p_from.attribute9;
984     p_to.attribute10 := p_from.attribute10;
985     p_to.attribute11 := p_from.attribute11;
986     p_to.attribute12 := p_from.attribute12;
987     p_to.attribute13 := p_from.attribute13;
988     p_to.attribute14 := p_from.attribute14;
989     p_to.attribute15 := p_from.attribute15;
990     p_to.created_by := p_from.created_by;
991     p_to.creation_date := p_from.creation_date;
992     p_to.last_updated_by := p_from.last_updated_by;
993     p_to.last_update_date := p_from.last_update_date;
994     p_to.last_update_login := p_from.last_update_login;
995   END migrate;
996   PROCEDURE migrate (
997     p_from	IN qtyv_rec_type,
998     p_to	OUT NOCOPY okl_question_types_tl_rec_type
999   ) IS
1000   BEGIN
1001     p_to.id := p_from.id;
1002     p_to.sfwt_flag := p_from.sfwt_flag;
1003     p_to.name := p_from.name;
1004     p_to.description := p_from.description;
1005     p_to.created_by := p_from.created_by;
1006     p_to.creation_date := p_from.creation_date;
1007     p_to.last_updated_by := p_from.last_updated_by;
1008     p_to.last_update_date := p_from.last_update_date;
1009     p_to.last_update_login := p_from.last_update_login;
1010   END migrate;
1011   PROCEDURE migrate (
1012     p_from	IN okl_question_types_tl_rec_type,
1013     p_to	OUT NOCOPY qtyv_rec_type
1014   ) IS
1015   BEGIN
1016     p_to.id := p_from.id;
1017     p_to.sfwt_flag := p_from.sfwt_flag;
1018     p_to.name := p_from.name;
1019     p_to.description := p_from.description;
1020     p_to.created_by := p_from.created_by;
1021     p_to.creation_date := p_from.creation_date;
1022     p_to.last_updated_by := p_from.last_updated_by;
1023     p_to.last_update_date := p_from.last_update_date;
1024     p_to.last_update_login := p_from.last_update_login;
1025   END migrate;
1026 
1027   ---------------------------------------------------------------------------
1028   -- PROCEDURE validate_row
1029   ---------------------------------------------------------------------------
1030   -------------------------------------------
1031   -- validate_row for:OKL_QUESTION_TYPES_V --
1032   -------------------------------------------
1033   PROCEDURE validate_row(
1034     p_api_version                  IN NUMBER,
1035     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
1036     x_return_status                OUT NOCOPY VARCHAR2,
1037     x_msg_count                    OUT NOCOPY NUMBER,
1038     x_msg_data                     OUT NOCOPY VARCHAR2,
1039     p_qtyv_rec                     IN qtyv_rec_type) IS
1040 
1041     l_api_version                 CONSTANT NUMBER := 1;
1042     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
1043     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1044     l_qtyv_rec                     qtyv_rec_type := p_qtyv_rec;
1045     l_qty_rec                      qty_rec_type;
1046     l_okl_question_types_tl_rec    okl_question_types_tl_rec_type;
1047   BEGIN
1048     l_return_status := okl_api.START_ACTIVITY(l_api_name,
1049                                               G_PKG_NAME,
1050                                               p_init_msg_list,
1051                                               l_api_version,
1052                                               p_api_version,
1053                                               '_PVT',
1054                                               x_return_status);
1055     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1056       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1057     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1058       RAISE okl_api.G_EXCEPTION_ERROR;
1059     END IF;
1060     --- Validate all non-missing attributes (Item Level Validation)
1061     l_return_status := Validate_Attributes(l_qtyv_rec);
1062     --- If any errors happen abort API
1063     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1064       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1065     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1066       RAISE okl_api.G_EXCEPTION_ERROR;
1067     END IF;
1068     l_return_status := Validate_Record(l_qtyv_rec);
1069     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1070       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1071     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1072       RAISE okl_api.G_EXCEPTION_ERROR;
1073     END IF;
1074     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
1075   EXCEPTION
1076     WHEN okl_api.G_EXCEPTION_ERROR THEN
1077       x_return_status := okl_api.HANDLE_EXCEPTIONS
1078       (
1079         l_api_name,
1080         G_PKG_NAME,
1081         'okl_api.G_RET_STS_ERROR',
1082         x_msg_count,
1083         x_msg_data,
1084         '_PVT'
1085       );
1086     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1087       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1088       (
1089         l_api_name,
1090         G_PKG_NAME,
1091         'okl_api.G_RET_STS_UNEXP_ERROR',
1092         x_msg_count,
1093         x_msg_data,
1094         '_PVT'
1095       );
1096     WHEN OTHERS THEN
1097       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1098       (
1099         l_api_name,
1100         G_PKG_NAME,
1101         'OTHERS',
1102         x_msg_count,
1103         x_msg_data,
1104         '_PVT'
1105       );
1106   END validate_row;
1107   ------------------------------------------
1108   -- PL/SQL TBL validate_row for:QTYV_TBL --
1109   ------------------------------------------
1110   PROCEDURE validate_row(
1111     p_api_version                  IN NUMBER,
1112     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
1113     x_return_status                OUT NOCOPY VARCHAR2,
1114     x_msg_count                    OUT NOCOPY NUMBER,
1115     x_msg_data                     OUT NOCOPY VARCHAR2,
1116     p_qtyv_tbl                     IN qtyv_tbl_type) IS
1117 
1118     l_api_version                 CONSTANT NUMBER := 1;
1119     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
1120     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1121     i                              NUMBER := 0;
1122   BEGIN
1123     okl_api.init_msg_list(p_init_msg_list);
1124     -- Make sure PL/SQL table has records in it before passing
1125     IF (p_qtyv_tbl.COUNT > 0) THEN
1126       i := p_qtyv_tbl.FIRST;
1127       LOOP
1128         validate_row (
1129           p_api_version                  => p_api_version,
1130           p_init_msg_list                => okl_api.G_FALSE,
1131           x_return_status                => x_return_status,
1132           x_msg_count                    => x_msg_count,
1133           x_msg_data                     => x_msg_data,
1134           p_qtyv_rec                     => p_qtyv_tbl(i));
1135         EXIT WHEN (i = p_qtyv_tbl.LAST);
1136         i := p_qtyv_tbl.NEXT(i);
1137       END LOOP;
1138     END IF;
1139   EXCEPTION
1140     WHEN okl_api.G_EXCEPTION_ERROR THEN
1141       x_return_status := okl_api.HANDLE_EXCEPTIONS
1142       (
1143         l_api_name,
1144         G_PKG_NAME,
1145         'okl_api.G_RET_STS_ERROR',
1146         x_msg_count,
1147         x_msg_data,
1148         '_PVT'
1149       );
1150     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1151       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1152       (
1153         l_api_name,
1154         G_PKG_NAME,
1155         'okl_api.G_RET_STS_UNEXP_ERROR',
1156         x_msg_count,
1157         x_msg_data,
1158         '_PVT'
1159       );
1160     WHEN OTHERS THEN
1161       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1162       (
1163         l_api_name,
1164         G_PKG_NAME,
1165         'OTHERS',
1166         x_msg_count,
1167         x_msg_data,
1168         '_PVT'
1169       );
1170   END validate_row;
1171 
1172   ---------------------------------------------------------------------------
1173   -- PROCEDURE insert_row
1174   ---------------------------------------------------------------------------
1175   -----------------------------------------
1176   -- insert_row for:OKL_QUESTION_TYPES_B --
1177   -----------------------------------------
1178   PROCEDURE insert_row(
1179     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
1180     x_return_status                OUT NOCOPY VARCHAR2,
1181     x_msg_count                    OUT NOCOPY NUMBER,
1182     x_msg_data                     OUT NOCOPY VARCHAR2,
1183     p_qty_rec                      IN qty_rec_type,
1184     x_qty_rec                      OUT NOCOPY qty_rec_type) IS
1185 
1186     l_api_version                 CONSTANT NUMBER := 1;
1187     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
1188     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1189     l_qty_rec                      qty_rec_type := p_qty_rec;
1190     l_def_qty_rec                  qty_rec_type;
1191     ---------------------------------------------
1192     -- Set_Attributes for:OKL_QUESTION_TYPES_B --
1193     ---------------------------------------------
1194     FUNCTION Set_Attributes (
1195       p_qty_rec IN  qty_rec_type,
1196       x_qty_rec OUT NOCOPY qty_rec_type
1197     ) RETURN VARCHAR2 IS
1198       l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1199     BEGIN
1200       x_qty_rec := p_qty_rec;
1201       RETURN(l_return_status);
1202     END Set_Attributes;
1203   BEGIN
1204     l_return_status := okl_api.START_ACTIVITY(l_api_name,
1205                                               p_init_msg_list,
1206                                               '_PVT',
1207                                               x_return_status);
1208     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1209       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1210     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1211       RAISE okl_api.G_EXCEPTION_ERROR;
1212     END IF;
1213     --- Setting item attributes
1214     l_return_status := Set_Attributes(
1215       p_qty_rec,                         -- IN
1216       l_qty_rec);                        -- OUT
1217     --- If any errors happen abort API
1218     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1219       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1220     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1221       RAISE okl_api.G_EXCEPTION_ERROR;
1222     END IF;
1223     INSERT INTO OKL_QUESTION_TYPES_B(
1224         id,
1225         srd_id,
1226         lrg_lse_id,
1227         lrg_srd_id,
1228         rdr_rdf_code,
1229         rgr_rgd_code,
1230         object_version_number,
1231         attribute_category,
1232         attribute1,
1233         attribute2,
1234         attribute3,
1235         attribute4,
1236         attribute5,
1237         attribute6,
1238         attribute7,
1239         attribute8,
1240         attribute9,
1241         attribute10,
1242         attribute11,
1243         attribute12,
1244         attribute13,
1245         attribute14,
1246         attribute15,
1247         created_by,
1248         creation_date,
1249         last_updated_by,
1250         last_update_date,
1251         last_update_login)
1252       VALUES (
1253         l_qty_rec.id,
1254         l_qty_rec.srd_id,
1255         l_qty_rec.lrg_lse_id,
1256         l_qty_rec.lrg_srd_id,
1257         l_qty_rec.rdr_rdf_code,
1258         l_qty_rec.rgr_rgd_code,
1259         l_qty_rec.object_version_number,
1260         l_qty_rec.attribute_category,
1261         l_qty_rec.attribute1,
1262         l_qty_rec.attribute2,
1263         l_qty_rec.attribute3,
1264         l_qty_rec.attribute4,
1265         l_qty_rec.attribute5,
1266         l_qty_rec.attribute6,
1267         l_qty_rec.attribute7,
1268         l_qty_rec.attribute8,
1269         l_qty_rec.attribute9,
1270         l_qty_rec.attribute10,
1271         l_qty_rec.attribute11,
1272         l_qty_rec.attribute12,
1273         l_qty_rec.attribute13,
1274         l_qty_rec.attribute14,
1275         l_qty_rec.attribute15,
1276         l_qty_rec.created_by,
1277         l_qty_rec.creation_date,
1278         l_qty_rec.last_updated_by,
1279         l_qty_rec.last_update_date,
1280         l_qty_rec.last_update_login);
1281     -- Set OUT values
1282     x_qty_rec := l_qty_rec;
1283     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
1284   EXCEPTION
1285     WHEN okl_api.G_EXCEPTION_ERROR THEN
1286       x_return_status := okl_api.HANDLE_EXCEPTIONS
1287       (
1288         l_api_name,
1289         G_PKG_NAME,
1290         'okl_api.G_RET_STS_ERROR',
1291         x_msg_count,
1292         x_msg_data,
1293         '_PVT'
1294       );
1295     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1296       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1297       (
1298         l_api_name,
1299         G_PKG_NAME,
1300         'okl_api.G_RET_STS_UNEXP_ERROR',
1301         x_msg_count,
1302         x_msg_data,
1303         '_PVT'
1304       );
1305     WHEN OTHERS THEN
1306       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1307       (
1308         l_api_name,
1309         G_PKG_NAME,
1310         'OTHERS',
1311         x_msg_count,
1312         x_msg_data,
1313         '_PVT'
1314       );
1315   END insert_row;
1316   ------------------------------------------
1317   -- insert_row for:OKL_QUESTION_TYPES_TL --
1318   ------------------------------------------
1319   PROCEDURE insert_row(
1320     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
1321     x_return_status                OUT NOCOPY VARCHAR2,
1322     x_msg_count                    OUT NOCOPY NUMBER,
1323     x_msg_data                     OUT NOCOPY VARCHAR2,
1324     p_okl_question_types_tl_rec    IN okl_question_types_tl_rec_type,
1325     x_okl_question_types_tl_rec    OUT NOCOPY okl_question_types_tl_rec_type) IS
1326 
1327     l_api_version                 CONSTANT NUMBER := 1;
1328     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_insert_row';
1329     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1330     l_okl_question_types_tl_rec    okl_question_types_tl_rec_type := p_okl_question_types_tl_rec;
1331     ldefoklquestiontypestlrec      okl_question_types_tl_rec_type;
1332     CURSOR get_languages IS
1333       SELECT *
1334         FROM FND_LANGUAGES
1335        WHERE INSTALLED_FLAG IN ('I', 'B');
1336     ----------------------------------------------
1337     -- Set_Attributes for:OKL_QUESTION_TYPES_TL --
1338     ----------------------------------------------
1339     FUNCTION Set_Attributes (
1340       p_okl_question_types_tl_rec IN  okl_question_types_tl_rec_type,
1341       x_okl_question_types_tl_rec OUT NOCOPY okl_question_types_tl_rec_type
1342     ) RETURN VARCHAR2 IS
1343       l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1344     BEGIN
1345       x_okl_question_types_tl_rec := p_okl_question_types_tl_rec;
1346       x_okl_question_types_tl_rec.LANGUAGE := USERENV('LANG');
1347       x_okl_question_types_tl_rec.SOURCE_LANG := USERENV('LANG');
1348       RETURN(l_return_status);
1349     END Set_Attributes;
1350   BEGIN
1351     l_return_status := okl_api.START_ACTIVITY(l_api_name,
1352                                               p_init_msg_list,
1353                                               '_PVT',
1354                                               x_return_status);
1355     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1356       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1357     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1358       RAISE okl_api.G_EXCEPTION_ERROR;
1359     END IF;
1360     --- Setting item attributes
1361     l_return_status := Set_Attributes(
1362       p_okl_question_types_tl_rec,       -- IN
1363       l_okl_question_types_tl_rec);      -- OUT
1364     --- If any errors happen abort API
1365     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1366       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1367     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1368       RAISE okl_api.G_EXCEPTION_ERROR;
1369     END IF;
1370     FOR l_lang_rec IN get_languages LOOP
1371       l_okl_question_types_tl_rec.LANGUAGE := l_lang_rec.language_code;
1372       INSERT INTO OKL_QUESTION_TYPES_TL(
1373           id,
1374           LANGUAGE,
1375           source_lang,
1376           sfwt_flag,
1377           name,
1378           description,
1379           created_by,
1380           creation_date,
1381           last_updated_by,
1382           last_update_date,
1383           last_update_login)
1384         VALUES (
1385           l_okl_question_types_tl_rec.id,
1386           l_okl_question_types_tl_rec.LANGUAGE,
1387           l_okl_question_types_tl_rec.source_lang,
1388           l_okl_question_types_tl_rec.sfwt_flag,
1389           l_okl_question_types_tl_rec.name,
1390           l_okl_question_types_tl_rec.description,
1391           l_okl_question_types_tl_rec.created_by,
1392           l_okl_question_types_tl_rec.creation_date,
1393           l_okl_question_types_tl_rec.last_updated_by,
1394           l_okl_question_types_tl_rec.last_update_date,
1395           l_okl_question_types_tl_rec.last_update_login);
1396     END LOOP;
1397     -- Set OUT values
1398     x_okl_question_types_tl_rec := l_okl_question_types_tl_rec;
1399     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
1400   EXCEPTION
1401     WHEN okl_api.G_EXCEPTION_ERROR THEN
1402       x_return_status := okl_api.HANDLE_EXCEPTIONS
1403       (
1404         l_api_name,
1405         G_PKG_NAME,
1406         'okl_api.G_RET_STS_ERROR',
1407         x_msg_count,
1408         x_msg_data,
1409         '_PVT'
1410       );
1411     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1412       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1413       (
1414         l_api_name,
1415         G_PKG_NAME,
1416         'okl_api.G_RET_STS_UNEXP_ERROR',
1417         x_msg_count,
1418         x_msg_data,
1419         '_PVT'
1420       );
1421     WHEN OTHERS THEN
1422       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1423       (
1424         l_api_name,
1425         G_PKG_NAME,
1426         'OTHERS',
1427         x_msg_count,
1428         x_msg_data,
1429         '_PVT'
1430       );
1431   END insert_row;
1432   -----------------------------------------
1433   -- insert_row for:OKL_QUESTION_TYPES_V --
1434   -----------------------------------------
1435   PROCEDURE insert_row(
1436     p_api_version                  IN NUMBER,
1437     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
1438     x_return_status                OUT NOCOPY VARCHAR2,
1439     x_msg_count                    OUT NOCOPY NUMBER,
1440     x_msg_data                     OUT NOCOPY VARCHAR2,
1441     p_qtyv_rec                     IN qtyv_rec_type,
1442     x_qtyv_rec                     OUT NOCOPY qtyv_rec_type) IS
1443 
1444     l_api_version                 CONSTANT NUMBER := 1;
1445     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
1446     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1447     l_qtyv_rec                     qtyv_rec_type;
1448     l_def_qtyv_rec                 qtyv_rec_type;
1449     l_qty_rec                      qty_rec_type;
1450     lx_qty_rec                     qty_rec_type;
1451     l_okl_question_types_tl_rec    okl_question_types_tl_rec_type;
1452     lx_okl_question_types_tl_rec   okl_question_types_tl_rec_type;
1453     -------------------------------
1454     -- FUNCTION fill_who_columns --
1455     -------------------------------
1456     FUNCTION fill_who_columns (
1457       p_qtyv_rec	IN qtyv_rec_type
1458     ) RETURN qtyv_rec_type IS
1459       l_qtyv_rec	qtyv_rec_type := p_qtyv_rec;
1460     BEGIN
1461       l_qtyv_rec.CREATION_DATE := SYSDATE;
1462       l_qtyv_rec.CREATED_BY := Fnd_Global.USER_ID;
1463       l_qtyv_rec.LAST_UPDATE_DATE := SYSDATE;
1464       l_qtyv_rec.LAST_UPDATED_BY := Fnd_Global.USER_ID;
1465       l_qtyv_rec.LAST_UPDATE_LOGIN := Fnd_Global.LOGIN_ID;
1466       RETURN(l_qtyv_rec);
1467     END fill_who_columns;
1468     ---------------------------------------------
1469     -- Set_Attributes for:OKL_QUESTION_TYPES_V --
1470     ---------------------------------------------
1471     FUNCTION Set_Attributes (
1472       p_qtyv_rec IN  qtyv_rec_type,
1473       x_qtyv_rec OUT NOCOPY qtyv_rec_type
1474     ) RETURN VARCHAR2 IS
1475       l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1476     BEGIN
1477       x_qtyv_rec := p_qtyv_rec;
1478       x_qtyv_rec.OBJECT_VERSION_NUMBER := 1;
1479       x_qtyv_rec.SFWT_FLAG := 'N';
1480       RETURN(l_return_status);
1481     END Set_Attributes;
1482   BEGIN
1483     l_return_status := okl_api.START_ACTIVITY(l_api_name,
1484                                               G_PKG_NAME,
1485                                               p_init_msg_list,
1486                                               l_api_version,
1487                                               p_api_version,
1488                                               '_PVT',
1489                                               x_return_status);
1490     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1491       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1492     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1493       RAISE okl_api.G_EXCEPTION_ERROR;
1494     END IF;
1495     l_qtyv_rec := null_out_defaults(p_qtyv_rec);
1496     -- Set primary key value
1497     l_qtyv_rec.ID := get_seq_id;
1498     --- Setting item attributes
1499     l_return_status := Set_Attributes(
1500       l_qtyv_rec,                        -- IN
1501       l_def_qtyv_rec);                   -- OUT
1502     --- If any errors happen abort API
1503     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1504       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1505     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1506       RAISE okl_api.G_EXCEPTION_ERROR;
1507     END IF;
1508     l_def_qtyv_rec := fill_who_columns(l_def_qtyv_rec);
1509     --- Validate all non-missing attributes (Item Level Validation)
1510     l_return_status := Validate_Attributes(l_def_qtyv_rec);
1511     --- If any errors happen abort API
1512     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1513       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1514     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1515       RAISE okl_api.G_EXCEPTION_ERROR;
1516     END IF;
1517     l_return_status := Validate_Record(l_def_qtyv_rec);
1518     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1519       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1520     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1521       RAISE okl_api.G_EXCEPTION_ERROR;
1522     END IF;
1523     --------------------------------------
1524     -- Move VIEW record to "Child" records
1525     --------------------------------------
1526     migrate(l_def_qtyv_rec, l_qty_rec);
1527     migrate(l_def_qtyv_rec, l_okl_question_types_tl_rec);
1528     --------------------------------------------
1529     -- Call the INSERT_ROW for each child record
1530     --------------------------------------------
1531     insert_row(
1532       p_init_msg_list,
1533       x_return_status,
1534       x_msg_count,
1535       x_msg_data,
1536       l_qty_rec,
1537       lx_qty_rec
1538     );
1539     IF (x_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1540       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1541     ELSIF (x_return_status = okl_api.G_RET_STS_ERROR) THEN
1542       RAISE okl_api.G_EXCEPTION_ERROR;
1543     END IF;
1544     migrate(lx_qty_rec, l_def_qtyv_rec);
1545     insert_row(
1546       p_init_msg_list,
1547       x_return_status,
1548       x_msg_count,
1549       x_msg_data,
1550       l_okl_question_types_tl_rec,
1551       lx_okl_question_types_tl_rec
1552     );
1553     IF (x_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1554       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1555     ELSIF (x_return_status = okl_api.G_RET_STS_ERROR) THEN
1556       RAISE okl_api.G_EXCEPTION_ERROR;
1557     END IF;
1558     migrate(lx_okl_question_types_tl_rec, l_def_qtyv_rec);
1559     -- Set OUT values
1560     x_qtyv_rec := l_def_qtyv_rec;
1561     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
1562   EXCEPTION
1563     WHEN okl_api.G_EXCEPTION_ERROR THEN
1564       x_return_status := okl_api.HANDLE_EXCEPTIONS
1565       (
1566         l_api_name,
1567         G_PKG_NAME,
1568         'okl_api.G_RET_STS_ERROR',
1569         x_msg_count,
1570         x_msg_data,
1571         '_PVT'
1572       );
1573     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1574       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1575       (
1576         l_api_name,
1577         G_PKG_NAME,
1578         'okl_api.G_RET_STS_UNEXP_ERROR',
1579         x_msg_count,
1580         x_msg_data,
1581         '_PVT'
1582       );
1583     WHEN OTHERS THEN
1584       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1585       (
1586         l_api_name,
1587         G_PKG_NAME,
1588         'OTHERS',
1589         x_msg_count,
1590         x_msg_data,
1591         '_PVT'
1592       );
1593   END insert_row;
1594   ----------------------------------------
1595   -- PL/SQL TBL insert_row for:QTYV_TBL --
1596   ----------------------------------------
1597   PROCEDURE insert_row(
1598     p_api_version                  IN NUMBER,
1599     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
1600     x_return_status                OUT NOCOPY VARCHAR2,
1601     x_msg_count                    OUT NOCOPY NUMBER,
1602     x_msg_data                     OUT NOCOPY VARCHAR2,
1603     p_qtyv_tbl                     IN qtyv_tbl_type,
1604     x_qtyv_tbl                     OUT NOCOPY qtyv_tbl_type) IS
1605 
1606     l_api_version                 CONSTANT NUMBER := 1;
1607     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
1608     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1609     i                              NUMBER := 0;
1610   BEGIN
1611     okl_api.init_msg_list(p_init_msg_list);
1612     -- Make sure PL/SQL table has records in it before passing
1613     IF (p_qtyv_tbl.COUNT > 0) THEN
1614       i := p_qtyv_tbl.FIRST;
1615       LOOP
1616         insert_row (
1617           p_api_version                  => p_api_version,
1618           p_init_msg_list                => okl_api.G_FALSE,
1619           x_return_status                => x_return_status,
1620           x_msg_count                    => x_msg_count,
1621           x_msg_data                     => x_msg_data,
1622           p_qtyv_rec                     => p_qtyv_tbl(i),
1623           x_qtyv_rec                     => x_qtyv_tbl(i));
1624         EXIT WHEN (i = p_qtyv_tbl.LAST);
1625         i := p_qtyv_tbl.NEXT(i);
1626       END LOOP;
1627     END IF;
1628   EXCEPTION
1629     WHEN okl_api.G_EXCEPTION_ERROR THEN
1630       x_return_status := okl_api.HANDLE_EXCEPTIONS
1631       (
1632         l_api_name,
1633         G_PKG_NAME,
1634         'okl_api.G_RET_STS_ERROR',
1635         x_msg_count,
1636         x_msg_data,
1637         '_PVT'
1638       );
1639     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1640       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1641       (
1642         l_api_name,
1643         G_PKG_NAME,
1644         'okl_api.G_RET_STS_UNEXP_ERROR',
1645         x_msg_count,
1646         x_msg_data,
1647         '_PVT'
1648       );
1649     WHEN OTHERS THEN
1650       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1651       (
1652         l_api_name,
1653         G_PKG_NAME,
1654         'OTHERS',
1655         x_msg_count,
1656         x_msg_data,
1657         '_PVT'
1658       );
1659   END insert_row;
1660 
1661   ---------------------------------------------------------------------------
1662   -- PROCEDURE lock_row
1663   ---------------------------------------------------------------------------
1664   ---------------------------------------
1665   -- lock_row for:OKL_QUESTION_TYPES_B --
1666   ---------------------------------------
1667   PROCEDURE lock_row(
1668     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
1669     x_return_status                OUT NOCOPY VARCHAR2,
1670     x_msg_count                    OUT NOCOPY NUMBER,
1671     x_msg_data                     OUT NOCOPY VARCHAR2,
1672     p_qty_rec                      IN qty_rec_type) IS
1673 
1674     E_Resource_Busy               EXCEPTION;
1675     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1676     CURSOR lock_csr (p_qty_rec IN qty_rec_type) IS
1677     SELECT OBJECT_VERSION_NUMBER
1678       FROM OKL_QUESTION_TYPES_B
1679      WHERE ID = p_qty_rec.id
1680        AND OBJECT_VERSION_NUMBER = p_qty_rec.object_version_number
1681     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1682 
1683     CURSOR  lchk_csr (p_qty_rec IN qty_rec_type) IS
1684     SELECT OBJECT_VERSION_NUMBER
1685       FROM OKL_QUESTION_TYPES_B
1686     WHERE ID = p_qty_rec.id;
1687     l_api_version                 CONSTANT NUMBER := 1;
1688     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
1689     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1690     l_object_version_number       OKL_QUESTION_TYPES_B.OBJECT_VERSION_NUMBER%TYPE;
1691     lc_object_version_number      OKL_QUESTION_TYPES_B.OBJECT_VERSION_NUMBER%TYPE;
1692     l_row_notfound                BOOLEAN := FALSE;
1693     lc_row_notfound               BOOLEAN := FALSE;
1694   BEGIN
1695     l_return_status := okl_api.START_ACTIVITY(l_api_name,
1696                                               p_init_msg_list,
1697                                               '_PVT',
1698                                               x_return_status);
1699     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1700       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1701     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1702       RAISE okl_api.G_EXCEPTION_ERROR;
1703     END IF;
1704     BEGIN
1705       OPEN lock_csr(p_qty_rec);
1706       FETCH lock_csr INTO l_object_version_number;
1707       l_row_notfound := lock_csr%NOTFOUND;
1708       CLOSE lock_csr;
1709     EXCEPTION
1710       WHEN E_Resource_Busy THEN
1711         IF (lock_csr%ISOPEN) THEN
1712           CLOSE lock_csr;
1713         END IF;
1714         okl_api.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1715         RAISE App_Exceptions.RECORD_LOCK_EXCEPTION;
1716     END;
1717 
1718     IF ( l_row_notfound ) THEN
1719       OPEN lchk_csr(p_qty_rec);
1720       FETCH lchk_csr INTO lc_object_version_number;
1721       lc_row_notfound := lchk_csr%NOTFOUND;
1722       CLOSE lchk_csr;
1723     END IF;
1724     IF (lc_row_notfound) THEN
1725       okl_api.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1726       RAISE okl_api.G_EXCEPTION_ERROR;
1727     ELSIF lc_object_version_number > p_qty_rec.object_version_number THEN
1728       okl_api.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1729       RAISE okl_api.G_EXCEPTION_ERROR;
1730     ELSIF lc_object_version_number <> p_qty_rec.object_version_number THEN
1731       okl_api.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1732       RAISE okl_api.G_EXCEPTION_ERROR;
1733     ELSIF lc_object_version_number = -1 THEN
1734       okl_api.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
1735       RAISE okl_api.G_EXCEPTION_ERROR;
1736     END IF;
1737     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
1738   EXCEPTION
1739     WHEN okl_api.G_EXCEPTION_ERROR THEN
1740       x_return_status := okl_api.HANDLE_EXCEPTIONS
1741       (
1742         l_api_name,
1743         G_PKG_NAME,
1744         'okl_api.G_RET_STS_ERROR',
1745         x_msg_count,
1746         x_msg_data,
1747         '_PVT'
1748       );
1749     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1750       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1751       (
1752         l_api_name,
1753         G_PKG_NAME,
1754         'okl_api.G_RET_STS_UNEXP_ERROR',
1755         x_msg_count,
1756         x_msg_data,
1757         '_PVT'
1758       );
1759     WHEN OTHERS THEN
1760       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1761       (
1762         l_api_name,
1763         G_PKG_NAME,
1764         'OTHERS',
1765         x_msg_count,
1766         x_msg_data,
1767         '_PVT'
1768       );
1769   END lock_row;
1770   ----------------------------------------
1771   -- lock_row for:OKL_QUESTION_TYPES_TL --
1772   ----------------------------------------
1773   PROCEDURE lock_row(
1774     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
1775     x_return_status                OUT NOCOPY VARCHAR2,
1776     x_msg_count                    OUT NOCOPY NUMBER,
1777     x_msg_data                     OUT NOCOPY VARCHAR2,
1778     p_okl_question_types_tl_rec    IN okl_question_types_tl_rec_type) IS
1779 
1780     E_Resource_Busy               EXCEPTION;
1781     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1782     CURSOR lock_csr (p_okl_question_types_tl_rec IN okl_question_types_tl_rec_type) IS
1783     SELECT *
1784       FROM OKL_QUESTION_TYPES_TL
1785      WHERE ID = p_okl_question_types_tl_rec.id
1786     FOR UPDATE NOWAIT;
1787 
1788     l_api_version                 CONSTANT NUMBER := 1;
1789     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_lock_row';
1790     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1791     l_lock_var                    lock_csr%ROWTYPE;
1792     l_row_notfound                BOOLEAN := FALSE;
1793     lc_row_notfound               BOOLEAN := FALSE;
1794   BEGIN
1795     l_return_status := okl_api.START_ACTIVITY(l_api_name,
1796                                               p_init_msg_list,
1797                                               '_PVT',
1798                                               x_return_status);
1799     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1800       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1801     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1802       RAISE okl_api.G_EXCEPTION_ERROR;
1803     END IF;
1804     BEGIN
1805       OPEN lock_csr(p_okl_question_types_tl_rec);
1806       FETCH lock_csr INTO l_lock_var;
1807       l_row_notfound := lock_csr%NOTFOUND;
1808       CLOSE lock_csr;
1809     EXCEPTION
1810       WHEN E_Resource_Busy THEN
1811         IF (lock_csr%ISOPEN) THEN
1812           CLOSE lock_csr;
1813         END IF;
1814         okl_api.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1815         RAISE App_Exceptions.RECORD_LOCK_EXCEPTION;
1816     END;
1817 
1818     IF ( l_row_notfound ) THEN
1819       okl_api.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1820       RAISE okl_api.G_EXCEPTION_ERROR;
1821     END IF;
1822     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
1823   EXCEPTION
1824     WHEN okl_api.G_EXCEPTION_ERROR THEN
1825       x_return_status := okl_api.HANDLE_EXCEPTIONS
1826       (
1827         l_api_name,
1828         G_PKG_NAME,
1829         'okl_api.G_RET_STS_ERROR',
1830         x_msg_count,
1831         x_msg_data,
1832         '_PVT'
1833       );
1834     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1835       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1836       (
1837         l_api_name,
1838         G_PKG_NAME,
1839         'okl_api.G_RET_STS_UNEXP_ERROR',
1840         x_msg_count,
1841         x_msg_data,
1842         '_PVT'
1843       );
1844     WHEN OTHERS THEN
1845       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1846       (
1847         l_api_name,
1848         G_PKG_NAME,
1849         'OTHERS',
1850         x_msg_count,
1851         x_msg_data,
1852         '_PVT'
1853       );
1854   END lock_row;
1855   ---------------------------------------
1856   -- lock_row for:OKL_QUESTION_TYPES_V --
1857   ---------------------------------------
1858   PROCEDURE lock_row(
1859     p_api_version                  IN NUMBER,
1860     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
1861     x_return_status                OUT NOCOPY VARCHAR2,
1862     x_msg_count                    OUT NOCOPY NUMBER,
1863     x_msg_data                     OUT NOCOPY VARCHAR2,
1864     p_qtyv_rec                     IN qtyv_rec_type) IS
1865 
1866     l_api_version                 CONSTANT NUMBER := 1;
1867     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
1868     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1869     l_qty_rec                      qty_rec_type;
1870     l_okl_question_types_tl_rec    okl_question_types_tl_rec_type;
1871   BEGIN
1872     l_return_status := okl_api.START_ACTIVITY(l_api_name,
1873                                               G_PKG_NAME,
1874                                               p_init_msg_list,
1875                                               l_api_version,
1876                                               p_api_version,
1877                                               '_PVT',
1878                                               x_return_status);
1879     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1880       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1881     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
1882       RAISE okl_api.G_EXCEPTION_ERROR;
1883     END IF;
1884     --------------------------------------
1885     -- Move VIEW record to "Child" records
1886     --------------------------------------
1887     migrate(p_qtyv_rec, l_qty_rec);
1888     migrate(p_qtyv_rec, l_okl_question_types_tl_rec);
1889     --------------------------------------------
1890     -- Call the LOCK_ROW for each child record
1891     --------------------------------------------
1892     lock_row(
1893       p_init_msg_list,
1894       x_return_status,
1895       x_msg_count,
1896       x_msg_data,
1897       l_qty_rec
1898     );
1899     IF (x_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1900       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1901     ELSIF (x_return_status = okl_api.G_RET_STS_ERROR) THEN
1902       RAISE okl_api.G_EXCEPTION_ERROR;
1903     END IF;
1904     lock_row(
1905       p_init_msg_list,
1906       x_return_status,
1907       x_msg_count,
1908       x_msg_data,
1909       l_okl_question_types_tl_rec
1910     );
1911     IF (x_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
1912       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
1913     ELSIF (x_return_status = okl_api.G_RET_STS_ERROR) THEN
1914       RAISE okl_api.G_EXCEPTION_ERROR;
1915     END IF;
1916     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
1917   EXCEPTION
1918     WHEN okl_api.G_EXCEPTION_ERROR THEN
1919       x_return_status := okl_api.HANDLE_EXCEPTIONS
1920       (
1921         l_api_name,
1922         G_PKG_NAME,
1923         'okl_api.G_RET_STS_ERROR',
1924         x_msg_count,
1925         x_msg_data,
1926         '_PVT'
1927       );
1928     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1929       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1930       (
1931         l_api_name,
1932         G_PKG_NAME,
1933         'okl_api.G_RET_STS_UNEXP_ERROR',
1934         x_msg_count,
1935         x_msg_data,
1936         '_PVT'
1937       );
1938     WHEN OTHERS THEN
1939       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1940       (
1941         l_api_name,
1942         G_PKG_NAME,
1943         'OTHERS',
1944         x_msg_count,
1945         x_msg_data,
1946         '_PVT'
1947       );
1948   END lock_row;
1949   --------------------------------------
1950   -- PL/SQL TBL lock_row for:QTYV_TBL --
1951   --------------------------------------
1952   PROCEDURE lock_row(
1953     p_api_version                  IN NUMBER,
1954     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
1955     x_return_status                OUT NOCOPY VARCHAR2,
1956     x_msg_count                    OUT NOCOPY NUMBER,
1957     x_msg_data                     OUT NOCOPY VARCHAR2,
1958     p_qtyv_tbl                     IN qtyv_tbl_type) IS
1959 
1960     l_api_version                 CONSTANT NUMBER := 1;
1961     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
1962     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
1963     i                              NUMBER := 0;
1964   BEGIN
1965     okl_api.init_msg_list(p_init_msg_list);
1966     -- Make sure PL/SQL table has records in it before passing
1967     IF (p_qtyv_tbl.COUNT > 0) THEN
1968       i := p_qtyv_tbl.FIRST;
1969       LOOP
1970         lock_row (
1971           p_api_version                  => p_api_version,
1972           p_init_msg_list                => okl_api.G_FALSE,
1973           x_return_status                => x_return_status,
1974           x_msg_count                    => x_msg_count,
1975           x_msg_data                     => x_msg_data,
1976           p_qtyv_rec                     => p_qtyv_tbl(i));
1977         EXIT WHEN (i = p_qtyv_tbl.LAST);
1978         i := p_qtyv_tbl.NEXT(i);
1979       END LOOP;
1980     END IF;
1981   EXCEPTION
1982     WHEN okl_api.G_EXCEPTION_ERROR THEN
1983       x_return_status := okl_api.HANDLE_EXCEPTIONS
1984       (
1985         l_api_name,
1986         G_PKG_NAME,
1987         'okl_api.G_RET_STS_ERROR',
1988         x_msg_count,
1989         x_msg_data,
1990         '_PVT'
1991       );
1992     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1993       x_return_status :=okl_api.HANDLE_EXCEPTIONS
1994       (
1995         l_api_name,
1996         G_PKG_NAME,
1997         'okl_api.G_RET_STS_UNEXP_ERROR',
1998         x_msg_count,
1999         x_msg_data,
2000         '_PVT'
2001       );
2002     WHEN OTHERS THEN
2003       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2004       (
2005         l_api_name,
2006         G_PKG_NAME,
2007         'OTHERS',
2008         x_msg_count,
2009         x_msg_data,
2010         '_PVT'
2011       );
2012   END lock_row;
2013 
2014   ---------------------------------------------------------------------------
2015   -- PROCEDURE update_row
2016   ---------------------------------------------------------------------------
2017   -----------------------------------------
2018   -- update_row for:OKL_QUESTION_TYPES_B --
2019   -----------------------------------------
2020   PROCEDURE update_row(
2021     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
2022     x_return_status                OUT NOCOPY VARCHAR2,
2023     x_msg_count                    OUT NOCOPY NUMBER,
2024     x_msg_data                     OUT NOCOPY VARCHAR2,
2025     p_qty_rec                      IN qty_rec_type,
2026     x_qty_rec                      OUT NOCOPY qty_rec_type) IS
2027 
2028     l_api_version                 CONSTANT NUMBER := 1;
2029     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
2030     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2031     l_qty_rec                      qty_rec_type := p_qty_rec;
2032     l_def_qty_rec                  qty_rec_type;
2033     l_row_notfound                 BOOLEAN := TRUE;
2034     ----------------------------------
2035     -- FUNCTION populate_new_record --
2036     ----------------------------------
2037     FUNCTION populate_new_record (
2038       p_qty_rec	IN qty_rec_type,
2039       x_qty_rec	OUT NOCOPY qty_rec_type
2040     ) RETURN VARCHAR2 IS
2041       l_qty_rec                      qty_rec_type;
2042       l_row_notfound                 BOOLEAN := TRUE;
2043       l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2044     BEGIN
2045       x_qty_rec := p_qty_rec;
2046       -- Get current database values
2047       l_qty_rec := get_rec(p_qty_rec, l_row_notfound);
2048       IF (l_row_notfound) THEN
2049         l_return_status := okl_api.G_RET_STS_UNEXP_ERROR;
2050       END IF;
2051       IF (x_qty_rec.id = okl_api.G_MISS_NUM)
2052       THEN
2053         x_qty_rec.id := l_qty_rec.id;
2054       END IF;
2055       IF (x_qty_rec.srd_id = okl_api.G_MISS_NUM)
2056       THEN
2057         x_qty_rec.srd_id := l_qty_rec.srd_id;
2058       END IF;
2059       IF (x_qty_rec.lrg_lse_id = okl_api.G_MISS_NUM)
2060       THEN
2061         x_qty_rec.lrg_lse_id := l_qty_rec.lrg_lse_id;
2062       END IF;
2063       IF (x_qty_rec.lrg_srd_id = okl_api.G_MISS_NUM)
2064       THEN
2065         x_qty_rec.lrg_srd_id := l_qty_rec.lrg_srd_id;
2066       END IF;
2067       IF (x_qty_rec.rdr_rdf_code = okl_api.G_MISS_CHAR)
2068       THEN
2069         x_qty_rec.rdr_rdf_code := l_qty_rec.rdr_rdf_code;
2070       END IF;
2071       IF (x_qty_rec.rgr_rgd_code = okl_api.G_MISS_CHAR)
2072       THEN
2073         x_qty_rec.rgr_rgd_code := l_qty_rec.rgr_rgd_code;
2074       END IF;
2075       IF (x_qty_rec.object_version_number = okl_api.G_MISS_NUM)
2076       THEN
2077         x_qty_rec.object_version_number := l_qty_rec.object_version_number;
2078       END IF;
2079       IF (x_qty_rec.attribute_category = okl_api.G_MISS_CHAR)
2080       THEN
2081         x_qty_rec.attribute_category := l_qty_rec.attribute_category;
2082       END IF;
2083       IF (x_qty_rec.attribute1 = okl_api.G_MISS_CHAR)
2084       THEN
2085         x_qty_rec.attribute1 := l_qty_rec.attribute1;
2086       END IF;
2087       IF (x_qty_rec.attribute2 = okl_api.G_MISS_CHAR)
2088       THEN
2089         x_qty_rec.attribute2 := l_qty_rec.attribute2;
2090       END IF;
2091       IF (x_qty_rec.attribute3 = okl_api.G_MISS_CHAR)
2092       THEN
2093         x_qty_rec.attribute3 := l_qty_rec.attribute3;
2094       END IF;
2095       IF (x_qty_rec.attribute4 = okl_api.G_MISS_CHAR)
2096       THEN
2097         x_qty_rec.attribute4 := l_qty_rec.attribute4;
2098       END IF;
2099       IF (x_qty_rec.attribute5 = okl_api.G_MISS_CHAR)
2100       THEN
2101         x_qty_rec.attribute5 := l_qty_rec.attribute5;
2102       END IF;
2103       IF (x_qty_rec.attribute6 = okl_api.G_MISS_CHAR)
2104       THEN
2105         x_qty_rec.attribute6 := l_qty_rec.attribute6;
2106       END IF;
2107       IF (x_qty_rec.attribute7 = okl_api.G_MISS_CHAR)
2108       THEN
2109         x_qty_rec.attribute7 := l_qty_rec.attribute7;
2110       END IF;
2111       IF (x_qty_rec.attribute8 = okl_api.G_MISS_CHAR)
2112       THEN
2113         x_qty_rec.attribute8 := l_qty_rec.attribute8;
2114       END IF;
2115       IF (x_qty_rec.attribute9 = okl_api.G_MISS_CHAR)
2116       THEN
2117         x_qty_rec.attribute9 := l_qty_rec.attribute9;
2118       END IF;
2119       IF (x_qty_rec.attribute10 = okl_api.G_MISS_CHAR)
2120       THEN
2121         x_qty_rec.attribute10 := l_qty_rec.attribute10;
2122       END IF;
2123       IF (x_qty_rec.attribute11 = okl_api.G_MISS_CHAR)
2124       THEN
2125         x_qty_rec.attribute11 := l_qty_rec.attribute11;
2126       END IF;
2127       IF (x_qty_rec.attribute12 = okl_api.G_MISS_CHAR)
2128       THEN
2129         x_qty_rec.attribute12 := l_qty_rec.attribute12;
2130       END IF;
2131       IF (x_qty_rec.attribute13 = okl_api.G_MISS_CHAR)
2132       THEN
2133         x_qty_rec.attribute13 := l_qty_rec.attribute13;
2134       END IF;
2135       IF (x_qty_rec.attribute14 = okl_api.G_MISS_CHAR)
2136       THEN
2137         x_qty_rec.attribute14 := l_qty_rec.attribute14;
2138       END IF;
2139       IF (x_qty_rec.attribute15 = okl_api.G_MISS_CHAR)
2140       THEN
2141         x_qty_rec.attribute15 := l_qty_rec.attribute15;
2142       END IF;
2143       IF (x_qty_rec.created_by = okl_api.G_MISS_NUM)
2144       THEN
2145         x_qty_rec.created_by := l_qty_rec.created_by;
2146       END IF;
2147       IF (x_qty_rec.creation_date = okl_api.G_MISS_DATE)
2148       THEN
2149         x_qty_rec.creation_date := l_qty_rec.creation_date;
2150       END IF;
2151       IF (x_qty_rec.last_updated_by = okl_api.G_MISS_NUM)
2152       THEN
2153         x_qty_rec.last_updated_by := l_qty_rec.last_updated_by;
2154       END IF;
2155       IF (x_qty_rec.last_update_date = okl_api.G_MISS_DATE)
2156       THEN
2157         x_qty_rec.last_update_date := l_qty_rec.last_update_date;
2158       END IF;
2159       IF (x_qty_rec.last_update_login = okl_api.G_MISS_NUM)
2160       THEN
2161         x_qty_rec.last_update_login := l_qty_rec.last_update_login;
2162       END IF;
2163       RETURN(l_return_status);
2164     END populate_new_record;
2165     ---------------------------------------------
2166     -- Set_Attributes for:OKL_QUESTION_TYPES_B --
2167     ---------------------------------------------
2168     FUNCTION Set_Attributes (
2169       p_qty_rec IN  qty_rec_type,
2170       x_qty_rec OUT NOCOPY qty_rec_type
2171     ) RETURN VARCHAR2 IS
2172       l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2173     BEGIN
2174       x_qty_rec := p_qty_rec;
2175       RETURN(l_return_status);
2176     END Set_Attributes;
2177   BEGIN
2178     l_return_status := okl_api.START_ACTIVITY(l_api_name,
2179                                               p_init_msg_list,
2180                                               '_PVT',
2181                                               x_return_status);
2182     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2183       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2184     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2185       RAISE okl_api.G_EXCEPTION_ERROR;
2186     END IF;
2187     --- Setting item attributes
2188     l_return_status := Set_Attributes(
2189       p_qty_rec,                         -- IN
2190       l_qty_rec);                        -- OUT
2191     --- If any errors happen abort API
2192     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2193       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2194     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2195       RAISE okl_api.G_EXCEPTION_ERROR;
2196     END IF;
2197     l_return_status := populate_new_record(l_qty_rec, l_def_qty_rec);
2198     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2199       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2200     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2201       RAISE okl_api.G_EXCEPTION_ERROR;
2202     END IF;
2203     UPDATE  OKL_QUESTION_TYPES_B
2204     SET SRD_ID = l_def_qty_rec.srd_id,
2205         LRG_LSE_ID = l_def_qty_rec.lrg_lse_id,
2206         LRG_SRD_ID = l_def_qty_rec.lrg_srd_id,
2207         RDR_RDF_CODE = l_def_qty_rec.rdr_rdf_code,
2208         RGR_RGD_CODE = l_def_qty_rec.rgr_rgd_code,
2209         OBJECT_VERSION_NUMBER = l_def_qty_rec.object_version_number,
2210         ATTRIBUTE_CATEGORY = l_def_qty_rec.attribute_category,
2211         ATTRIBUTE1 = l_def_qty_rec.attribute1,
2212         ATTRIBUTE2 = l_def_qty_rec.attribute2,
2213         ATTRIBUTE3 = l_def_qty_rec.attribute3,
2214         ATTRIBUTE4 = l_def_qty_rec.attribute4,
2215         ATTRIBUTE5 = l_def_qty_rec.attribute5,
2216         ATTRIBUTE6 = l_def_qty_rec.attribute6,
2217         ATTRIBUTE7 = l_def_qty_rec.attribute7,
2218         ATTRIBUTE8 = l_def_qty_rec.attribute8,
2219         ATTRIBUTE9 = l_def_qty_rec.attribute9,
2220         ATTRIBUTE10 = l_def_qty_rec.attribute10,
2221         ATTRIBUTE11 = l_def_qty_rec.attribute11,
2222         ATTRIBUTE12 = l_def_qty_rec.attribute12,
2223         ATTRIBUTE13 = l_def_qty_rec.attribute13,
2224         ATTRIBUTE14 = l_def_qty_rec.attribute14,
2225         ATTRIBUTE15 = l_def_qty_rec.attribute15,
2226         CREATED_BY = l_def_qty_rec.created_by,
2227         CREATION_DATE = l_def_qty_rec.creation_date,
2228         LAST_UPDATED_BY = l_def_qty_rec.last_updated_by,
2229         LAST_UPDATE_DATE = l_def_qty_rec.last_update_date,
2230         LAST_UPDATE_LOGIN = l_def_qty_rec.last_update_login
2231     WHERE ID = l_def_qty_rec.id;
2232 
2233     x_qty_rec := l_def_qty_rec;
2234     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
2235   EXCEPTION
2236     WHEN okl_api.G_EXCEPTION_ERROR THEN
2237       x_return_status := okl_api.HANDLE_EXCEPTIONS
2238       (
2239         l_api_name,
2240         G_PKG_NAME,
2241         'okl_api.G_RET_STS_ERROR',
2242         x_msg_count,
2243         x_msg_data,
2244         '_PVT'
2245       );
2246     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2247       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2248       (
2249         l_api_name,
2250         G_PKG_NAME,
2251         'okl_api.G_RET_STS_UNEXP_ERROR',
2252         x_msg_count,
2253         x_msg_data,
2254         '_PVT'
2255       );
2256     WHEN OTHERS THEN
2257       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2258       (
2259         l_api_name,
2260         G_PKG_NAME,
2261         'OTHERS',
2262         x_msg_count,
2263         x_msg_data,
2264         '_PVT'
2265       );
2266   END update_row;
2267   ------------------------------------------
2268   -- update_row for:OKL_QUESTION_TYPES_TL --
2269   ------------------------------------------
2270   PROCEDURE update_row(
2271     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
2272     x_return_status                OUT NOCOPY VARCHAR2,
2273     x_msg_count                    OUT NOCOPY NUMBER,
2274     x_msg_data                     OUT NOCOPY VARCHAR2,
2275     p_okl_question_types_tl_rec    IN okl_question_types_tl_rec_type,
2276     x_okl_question_types_tl_rec    OUT NOCOPY okl_question_types_tl_rec_type) IS
2277 
2278     l_api_version                 CONSTANT NUMBER := 1;
2279     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_update_row';
2280     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2281     l_okl_question_types_tl_rec    okl_question_types_tl_rec_type := p_okl_question_types_tl_rec;
2282     ldefoklquestiontypestlrec      okl_question_types_tl_rec_type;
2283     l_row_notfound                 BOOLEAN := TRUE;
2284     ----------------------------------
2285     -- FUNCTION populate_new_record --
2286     ----------------------------------
2287     FUNCTION populate_new_record (
2288       p_okl_question_types_tl_rec	IN okl_question_types_tl_rec_type,
2289       x_okl_question_types_tl_rec	OUT NOCOPY okl_question_types_tl_rec_type
2290     ) RETURN VARCHAR2 IS
2291       l_okl_question_types_tl_rec    okl_question_types_tl_rec_type;
2292       l_row_notfound                 BOOLEAN := TRUE;
2293       l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2294     BEGIN
2295       x_okl_question_types_tl_rec := p_okl_question_types_tl_rec;
2296       -- Get current database values
2297       l_okl_question_types_tl_rec := get_rec(p_okl_question_types_tl_rec, l_row_notfound);
2298       IF (l_row_notfound) THEN
2299         l_return_status := okl_api.G_RET_STS_UNEXP_ERROR;
2300       END IF;
2301       IF (x_okl_question_types_tl_rec.id = okl_api.G_MISS_NUM)
2302       THEN
2303         x_okl_question_types_tl_rec.id := l_okl_question_types_tl_rec.id;
2304       END IF;
2305       IF (x_okl_question_types_tl_rec.LANGUAGE = okl_api.G_MISS_CHAR)
2306       THEN
2307         x_okl_question_types_tl_rec.LANGUAGE := l_okl_question_types_tl_rec.LANGUAGE;
2308       END IF;
2309       IF (x_okl_question_types_tl_rec.source_lang = okl_api.G_MISS_CHAR)
2310       THEN
2311         x_okl_question_types_tl_rec.source_lang := l_okl_question_types_tl_rec.source_lang;
2312       END IF;
2313       IF (x_okl_question_types_tl_rec.sfwt_flag = okl_api.G_MISS_CHAR)
2314       THEN
2315         x_okl_question_types_tl_rec.sfwt_flag := l_okl_question_types_tl_rec.sfwt_flag;
2316       END IF;
2317       IF (x_okl_question_types_tl_rec.name = okl_api.G_MISS_CHAR)
2318       THEN
2319         x_okl_question_types_tl_rec.name := l_okl_question_types_tl_rec.name;
2320       END IF;
2321       IF (x_okl_question_types_tl_rec.description = okl_api.G_MISS_CHAR)
2322       THEN
2323         x_okl_question_types_tl_rec.description := l_okl_question_types_tl_rec.description;
2324       END IF;
2325       IF (x_okl_question_types_tl_rec.created_by = okl_api.G_MISS_NUM)
2326       THEN
2327         x_okl_question_types_tl_rec.created_by := l_okl_question_types_tl_rec.created_by;
2328       END IF;
2329       IF (x_okl_question_types_tl_rec.creation_date = okl_api.G_MISS_DATE)
2330       THEN
2331         x_okl_question_types_tl_rec.creation_date := l_okl_question_types_tl_rec.creation_date;
2332       END IF;
2333       IF (x_okl_question_types_tl_rec.last_updated_by = okl_api.G_MISS_NUM)
2334       THEN
2335         x_okl_question_types_tl_rec.last_updated_by := l_okl_question_types_tl_rec.last_updated_by;
2336       END IF;
2337       IF (x_okl_question_types_tl_rec.last_update_date = okl_api.G_MISS_DATE)
2338       THEN
2339         x_okl_question_types_tl_rec.last_update_date := l_okl_question_types_tl_rec.last_update_date;
2340       END IF;
2341       IF (x_okl_question_types_tl_rec.last_update_login = okl_api.G_MISS_NUM)
2342       THEN
2343         x_okl_question_types_tl_rec.last_update_login := l_okl_question_types_tl_rec.last_update_login;
2344       END IF;
2345       RETURN(l_return_status);
2346     END populate_new_record;
2347     ----------------------------------------------
2348     -- Set_Attributes for:OKL_QUESTION_TYPES_TL --
2349     ----------------------------------------------
2350     FUNCTION Set_Attributes (
2351       p_okl_question_types_tl_rec IN  okl_question_types_tl_rec_type,
2352       x_okl_question_types_tl_rec OUT NOCOPY okl_question_types_tl_rec_type
2353     ) RETURN VARCHAR2 IS
2354       l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2355     BEGIN
2356       x_okl_question_types_tl_rec := p_okl_question_types_tl_rec;
2357       x_okl_question_types_tl_rec.LANGUAGE := USERENV('LANG');
2358       x_okl_question_types_tl_rec.SOURCE_LANG := USERENV('LANG');
2359       RETURN(l_return_status);
2360     END Set_Attributes;
2361   BEGIN
2362     l_return_status := okl_api.START_ACTIVITY(l_api_name,
2363                                               p_init_msg_list,
2364                                               '_PVT',
2365                                               x_return_status);
2366     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2367       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2368     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2369       RAISE okl_api.G_EXCEPTION_ERROR;
2370     END IF;
2371     --- Setting item attributes
2372     l_return_status := Set_Attributes(
2373       p_okl_question_types_tl_rec,       -- IN
2374       l_okl_question_types_tl_rec);      -- OUT
2375     --- If any errors happen abort API
2376     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2377       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2378     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2379       RAISE okl_api.G_EXCEPTION_ERROR;
2380     END IF;
2381     l_return_status := populate_new_record(l_okl_question_types_tl_rec, ldefoklquestiontypestlrec);
2382     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2383       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2384     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2385       RAISE okl_api.G_EXCEPTION_ERROR;
2386     END IF;
2387     UPDATE  OKL_QUESTION_TYPES_TL
2388     SET NAME = ldefoklquestiontypestlrec.name,
2389         DESCRIPTION = ldefoklquestiontypestlrec.description,
2390         SOURCE_LANG = ldefoklquestiontypestlrec.source_lang,
2391         CREATED_BY = ldefoklquestiontypestlrec.created_by,
2392         CREATION_DATE = ldefoklquestiontypestlrec.creation_date,
2393         LAST_UPDATED_BY = ldefoklquestiontypestlrec.last_updated_by,
2394         LAST_UPDATE_DATE = ldefoklquestiontypestlrec.last_update_date,
2395         LAST_UPDATE_LOGIN = ldefoklquestiontypestlrec.last_update_login
2396     WHERE ID = ldefoklquestiontypestlrec.id
2397       AND SOURCE_LANG = USERENV('LANG');
2398 
2399     UPDATE  OKL_QUESTION_TYPES_TL
2400     SET SFWT_FLAG = 'Y'
2401     WHERE ID = ldefoklquestiontypestlrec.id
2402     AND USERENV('LANG') in (SOURCE_LANG, LANGUAGE);
2403 
2404     x_okl_question_types_tl_rec := ldefoklquestiontypestlrec;
2405     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
2406   EXCEPTION
2407     WHEN okl_api.G_EXCEPTION_ERROR THEN
2408       x_return_status := okl_api.HANDLE_EXCEPTIONS
2409       (
2410         l_api_name,
2411         G_PKG_NAME,
2412         'okl_api.G_RET_STS_ERROR',
2413         x_msg_count,
2414         x_msg_data,
2415         '_PVT'
2416       );
2417     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2418       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2419       (
2420         l_api_name,
2421         G_PKG_NAME,
2422         'okl_api.G_RET_STS_UNEXP_ERROR',
2423         x_msg_count,
2424         x_msg_data,
2425         '_PVT'
2426       );
2427     WHEN OTHERS THEN
2428       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2429       (
2430         l_api_name,
2431         G_PKG_NAME,
2432         'OTHERS',
2433         x_msg_count,
2434         x_msg_data,
2435         '_PVT'
2436       );
2437   END update_row;
2438   -----------------------------------------
2439   -- update_row for:OKL_QUESTION_TYPES_V --
2440   -----------------------------------------
2441   PROCEDURE update_row(
2442     p_api_version                  IN NUMBER,
2443     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
2444     x_return_status                OUT NOCOPY VARCHAR2,
2445     x_msg_count                    OUT NOCOPY NUMBER,
2446     x_msg_data                     OUT NOCOPY VARCHAR2,
2447     p_qtyv_rec                     IN qtyv_rec_type,
2448     x_qtyv_rec                     OUT NOCOPY qtyv_rec_type) IS
2449 
2450     l_api_version                 CONSTANT NUMBER := 1;
2451     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
2452     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2453     l_qtyv_rec                     qtyv_rec_type := p_qtyv_rec;
2454     l_def_qtyv_rec                 qtyv_rec_type;
2455     l_okl_question_types_tl_rec    okl_question_types_tl_rec_type;
2456     lx_okl_question_types_tl_rec   okl_question_types_tl_rec_type;
2457     l_qty_rec                      qty_rec_type;
2458     lx_qty_rec                     qty_rec_type;
2459     -------------------------------
2460     -- FUNCTION fill_who_columns --
2461     -------------------------------
2462     FUNCTION fill_who_columns (
2463       p_qtyv_rec	IN qtyv_rec_type
2464     ) RETURN qtyv_rec_type IS
2465       l_qtyv_rec	qtyv_rec_type := p_qtyv_rec;
2466     BEGIN
2467       l_qtyv_rec.LAST_UPDATE_DATE := SYSDATE;
2468       l_qtyv_rec.LAST_UPDATED_BY := Fnd_Global.USER_ID;
2469       l_qtyv_rec.LAST_UPDATE_LOGIN := Fnd_Global.LOGIN_ID;
2470       RETURN(l_qtyv_rec);
2471     END fill_who_columns;
2472     ----------------------------------
2473     -- FUNCTION populate_new_record --
2474     ----------------------------------
2475     FUNCTION populate_new_record (
2476       p_qtyv_rec	IN qtyv_rec_type,
2477       x_qtyv_rec	OUT NOCOPY qtyv_rec_type
2478     ) RETURN VARCHAR2 IS
2479       l_qtyv_rec                     qtyv_rec_type;
2480       l_row_notfound                 BOOLEAN := TRUE;
2481       l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2482     BEGIN
2483       x_qtyv_rec := p_qtyv_rec;
2484       -- Get current database values
2485       l_qtyv_rec := get_rec(p_qtyv_rec, l_row_notfound);
2486       IF (l_row_notfound) THEN
2487         l_return_status := okl_api.G_RET_STS_UNEXP_ERROR;
2488       END IF;
2489       IF (x_qtyv_rec.id = okl_api.G_MISS_NUM)
2490       THEN
2491         x_qtyv_rec.id := l_qtyv_rec.id;
2492       END IF;
2493       IF (x_qtyv_rec.object_version_number = okl_api.G_MISS_NUM)
2494       THEN
2495         x_qtyv_rec.object_version_number := l_qtyv_rec.object_version_number;
2496       END IF;
2497       IF (x_qtyv_rec.sfwt_flag = okl_api.G_MISS_CHAR)
2498       THEN
2499         x_qtyv_rec.sfwt_flag := l_qtyv_rec.sfwt_flag;
2500       END IF;
2501       IF (x_qtyv_rec.rgr_rgd_code = okl_api.G_MISS_CHAR)
2502       THEN
2503         x_qtyv_rec.rgr_rgd_code := l_qtyv_rec.rgr_rgd_code;
2504       END IF;
2505       IF (x_qtyv_rec.srd_id = okl_api.G_MISS_NUM)
2506       THEN
2507         x_qtyv_rec.srd_id := l_qtyv_rec.srd_id;
2508       END IF;
2509       IF (x_qtyv_rec.lrg_lse_id = okl_api.G_MISS_NUM)
2510       THEN
2511         x_qtyv_rec.lrg_lse_id := l_qtyv_rec.lrg_lse_id;
2512       END IF;
2513       IF (x_qtyv_rec.rdr_rdf_code = okl_api.G_MISS_CHAR)
2514       THEN
2515         x_qtyv_rec.rdr_rdf_code := l_qtyv_rec.rdr_rdf_code;
2516       END IF;
2517       IF (x_qtyv_rec.lrg_srd_id = okl_api.G_MISS_NUM)
2518       THEN
2519         x_qtyv_rec.lrg_srd_id := l_qtyv_rec.lrg_srd_id;
2520       END IF;
2521       IF (x_qtyv_rec.name = okl_api.G_MISS_CHAR)
2522       THEN
2523         x_qtyv_rec.name := l_qtyv_rec.name;
2524       END IF;
2525       IF (x_qtyv_rec.description = okl_api.G_MISS_CHAR)
2526       THEN
2527         x_qtyv_rec.description := l_qtyv_rec.description;
2528       END IF;
2529       IF (x_qtyv_rec.attribute_category = okl_api.G_MISS_CHAR)
2530       THEN
2531         x_qtyv_rec.attribute_category := l_qtyv_rec.attribute_category;
2532       END IF;
2533       IF (x_qtyv_rec.attribute1 = okl_api.G_MISS_CHAR)
2534       THEN
2535         x_qtyv_rec.attribute1 := l_qtyv_rec.attribute1;
2536       END IF;
2537       IF (x_qtyv_rec.attribute2 = okl_api.G_MISS_CHAR)
2538       THEN
2539         x_qtyv_rec.attribute2 := l_qtyv_rec.attribute2;
2540       END IF;
2541       IF (x_qtyv_rec.attribute3 = okl_api.G_MISS_CHAR)
2542       THEN
2543         x_qtyv_rec.attribute3 := l_qtyv_rec.attribute3;
2544       END IF;
2545       IF (x_qtyv_rec.attribute4 = okl_api.G_MISS_CHAR)
2546       THEN
2547         x_qtyv_rec.attribute4 := l_qtyv_rec.attribute4;
2548       END IF;
2549       IF (x_qtyv_rec.attribute5 = okl_api.G_MISS_CHAR)
2550       THEN
2551         x_qtyv_rec.attribute5 := l_qtyv_rec.attribute5;
2552       END IF;
2553       IF (x_qtyv_rec.attribute6 = okl_api.G_MISS_CHAR)
2554       THEN
2555         x_qtyv_rec.attribute6 := l_qtyv_rec.attribute6;
2556       END IF;
2557       IF (x_qtyv_rec.attribute7 = okl_api.G_MISS_CHAR)
2558       THEN
2559         x_qtyv_rec.attribute7 := l_qtyv_rec.attribute7;
2560       END IF;
2561       IF (x_qtyv_rec.attribute8 = okl_api.G_MISS_CHAR)
2562       THEN
2563         x_qtyv_rec.attribute8 := l_qtyv_rec.attribute8;
2564       END IF;
2565       IF (x_qtyv_rec.attribute9 = okl_api.G_MISS_CHAR)
2566       THEN
2567         x_qtyv_rec.attribute9 := l_qtyv_rec.attribute9;
2568       END IF;
2569       IF (x_qtyv_rec.attribute10 = okl_api.G_MISS_CHAR)
2570       THEN
2571         x_qtyv_rec.attribute10 := l_qtyv_rec.attribute10;
2572       END IF;
2573       IF (x_qtyv_rec.attribute11 = okl_api.G_MISS_CHAR)
2574       THEN
2575         x_qtyv_rec.attribute11 := l_qtyv_rec.attribute11;
2576       END IF;
2577       IF (x_qtyv_rec.attribute12 = okl_api.G_MISS_CHAR)
2578       THEN
2579         x_qtyv_rec.attribute12 := l_qtyv_rec.attribute12;
2580       END IF;
2581       IF (x_qtyv_rec.attribute13 = okl_api.G_MISS_CHAR)
2582       THEN
2583         x_qtyv_rec.attribute13 := l_qtyv_rec.attribute13;
2584       END IF;
2585       IF (x_qtyv_rec.attribute14 = okl_api.G_MISS_CHAR)
2586       THEN
2587         x_qtyv_rec.attribute14 := l_qtyv_rec.attribute14;
2588       END IF;
2589       IF (x_qtyv_rec.attribute15 = okl_api.G_MISS_CHAR)
2590       THEN
2591         x_qtyv_rec.attribute15 := l_qtyv_rec.attribute15;
2592       END IF;
2593       IF (x_qtyv_rec.created_by = okl_api.G_MISS_NUM)
2594       THEN
2595         x_qtyv_rec.created_by := l_qtyv_rec.created_by;
2596       END IF;
2597       IF (x_qtyv_rec.creation_date = okl_api.G_MISS_DATE)
2598       THEN
2599         x_qtyv_rec.creation_date := l_qtyv_rec.creation_date;
2600       END IF;
2601       IF (x_qtyv_rec.last_updated_by = okl_api.G_MISS_NUM)
2602       THEN
2603         x_qtyv_rec.last_updated_by := l_qtyv_rec.last_updated_by;
2604       END IF;
2605       IF (x_qtyv_rec.last_update_date = okl_api.G_MISS_DATE)
2606       THEN
2607         x_qtyv_rec.last_update_date := l_qtyv_rec.last_update_date;
2608       END IF;
2609       IF (x_qtyv_rec.last_update_login = okl_api.G_MISS_NUM)
2610       THEN
2611         x_qtyv_rec.last_update_login := l_qtyv_rec.last_update_login;
2612       END IF;
2613       RETURN(l_return_status);
2614     END populate_new_record;
2615     ---------------------------------------------
2616     -- Set_Attributes for:OKL_QUESTION_TYPES_V --
2617     ---------------------------------------------
2618     FUNCTION Set_Attributes (
2619       p_qtyv_rec IN  qtyv_rec_type,
2620       x_qtyv_rec OUT NOCOPY qtyv_rec_type
2621     ) RETURN VARCHAR2 IS
2622       l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2623     BEGIN
2624       x_qtyv_rec := p_qtyv_rec;
2625       x_qtyv_rec.OBJECT_VERSION_NUMBER := NVL(x_qtyv_rec.OBJECT_VERSION_NUMBER, 0) + 1;
2626       RETURN(l_return_status);
2627     END Set_Attributes;
2628   BEGIN
2629     l_return_status := okl_api.START_ACTIVITY(l_api_name,
2630                                               G_PKG_NAME,
2631                                               p_init_msg_list,
2632                                               l_api_version,
2633                                               p_api_version,
2634                                               '_PVT',
2635                                               x_return_status);
2636     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2637       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2638     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2639       RAISE okl_api.G_EXCEPTION_ERROR;
2640     END IF;
2641     --- Setting item attributes
2642     l_return_status := Set_Attributes(
2643       p_qtyv_rec,                        -- IN
2644       l_qtyv_rec);                       -- OUT
2645     --- If any errors happen abort API
2646     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2647       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2648     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2649       RAISE okl_api.G_EXCEPTION_ERROR;
2650     END IF;
2651     l_return_status := populate_new_record(l_qtyv_rec, l_def_qtyv_rec);
2652     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2653       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2654     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2655       RAISE okl_api.G_EXCEPTION_ERROR;
2656     END IF;
2657     l_def_qtyv_rec := fill_who_columns(l_def_qtyv_rec);
2658     --- Validate all non-missing attributes (Item Level Validation)
2659     l_return_status := Validate_Attributes(l_def_qtyv_rec);
2660     --- If any errors happen abort API
2661     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2662       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2663     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2664       RAISE okl_api.G_EXCEPTION_ERROR;
2665     END IF;
2666     l_return_status := Validate_Record(l_def_qtyv_rec);
2667     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2668       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2669     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2670       RAISE okl_api.G_EXCEPTION_ERROR;
2671     END IF;
2672 
2673     --------------------------------------
2674     -- Move VIEW record to "Child" records
2675     --------------------------------------
2676     migrate(l_def_qtyv_rec, l_okl_question_types_tl_rec);
2677     migrate(l_def_qtyv_rec, l_qty_rec);
2678     --------------------------------------------
2679     -- Call the UPDATE_ROW for each child record
2680     --------------------------------------------
2681     update_row(
2682       p_init_msg_list,
2683       x_return_status,
2684       x_msg_count,
2685       x_msg_data,
2686       l_okl_question_types_tl_rec,
2687       lx_okl_question_types_tl_rec
2688     );
2689     IF (x_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2690       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2691     ELSIF (x_return_status = okl_api.G_RET_STS_ERROR) THEN
2692       RAISE okl_api.G_EXCEPTION_ERROR;
2693     END IF;
2694     migrate(lx_okl_question_types_tl_rec, l_def_qtyv_rec);
2695     update_row(
2696       p_init_msg_list,
2697       x_return_status,
2698       x_msg_count,
2699       x_msg_data,
2700       l_qty_rec,
2701       lx_qty_rec
2702     );
2703     IF (x_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2704       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2705     ELSIF (x_return_status = okl_api.G_RET_STS_ERROR) THEN
2706       RAISE okl_api.G_EXCEPTION_ERROR;
2707     END IF;
2708     migrate(lx_qty_rec, l_def_qtyv_rec);
2709     x_qtyv_rec := l_def_qtyv_rec;
2710     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
2711   EXCEPTION
2712     WHEN okl_api.G_EXCEPTION_ERROR THEN
2713       x_return_status := okl_api.HANDLE_EXCEPTIONS
2714       (
2715         l_api_name,
2716         G_PKG_NAME,
2717         'okl_api.G_RET_STS_ERROR',
2718         x_msg_count,
2719         x_msg_data,
2720         '_PVT'
2721       );
2722     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2723       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2724       (
2725         l_api_name,
2726         G_PKG_NAME,
2727         'okl_api.G_RET_STS_UNEXP_ERROR',
2728         x_msg_count,
2729         x_msg_data,
2730         '_PVT'
2731       );
2732     WHEN OTHERS THEN
2733       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2734       (
2735         l_api_name,
2736         G_PKG_NAME,
2737         'OTHERS',
2738         x_msg_count,
2739         x_msg_data,
2740         '_PVT'
2741       );
2742   END update_row;
2743   ----------------------------------------
2744   -- PL/SQL TBL update_row for:QTYV_TBL --
2745   ----------------------------------------
2746   PROCEDURE update_row(
2747     p_api_version                  IN NUMBER,
2748     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
2749     x_return_status                OUT NOCOPY VARCHAR2,
2750     x_msg_count                    OUT NOCOPY NUMBER,
2751     x_msg_data                     OUT NOCOPY VARCHAR2,
2752     p_qtyv_tbl                     IN qtyv_tbl_type,
2753     x_qtyv_tbl                     OUT NOCOPY qtyv_tbl_type) IS
2754 
2755     l_api_version                 CONSTANT NUMBER := 1;
2756     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
2757     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2758     i                              NUMBER := 0;
2759   BEGIN
2760     okl_api.init_msg_list(p_init_msg_list);
2761     -- Make sure PL/SQL table has records in it before passing
2762     IF (p_qtyv_tbl.COUNT > 0) THEN
2763       i := p_qtyv_tbl.FIRST;
2764       LOOP
2765         update_row (
2766           p_api_version                  => p_api_version,
2767           p_init_msg_list                => okl_api.G_FALSE,
2768           x_return_status                => x_return_status,
2769           x_msg_count                    => x_msg_count,
2770           x_msg_data                     => x_msg_data,
2771           p_qtyv_rec                     => p_qtyv_tbl(i),
2772           x_qtyv_rec                     => x_qtyv_tbl(i));
2773         EXIT WHEN (i = p_qtyv_tbl.LAST);
2774         i := p_qtyv_tbl.NEXT(i);
2775       END LOOP;
2776     END IF;
2777   EXCEPTION
2778     WHEN okl_api.G_EXCEPTION_ERROR THEN
2779       x_return_status := okl_api.HANDLE_EXCEPTIONS
2780       (
2781         l_api_name,
2782         G_PKG_NAME,
2783         'okl_api.G_RET_STS_ERROR',
2784         x_msg_count,
2785         x_msg_data,
2786         '_PVT'
2787       );
2788     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2789       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2790       (
2791         l_api_name,
2792         G_PKG_NAME,
2793         'okl_api.G_RET_STS_UNEXP_ERROR',
2794         x_msg_count,
2795         x_msg_data,
2796         '_PVT'
2797       );
2798     WHEN OTHERS THEN
2799       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2800       (
2801         l_api_name,
2802         G_PKG_NAME,
2803         'OTHERS',
2804         x_msg_count,
2805         x_msg_data,
2806         '_PVT'
2807       );
2808   END update_row;
2809 
2810   ---------------------------------------------------------------------------
2811   -- PROCEDURE delete_row
2812   ---------------------------------------------------------------------------
2813   -----------------------------------------
2814   -- delete_row for:OKL_QUESTION_TYPES_B --
2815   -----------------------------------------
2816   PROCEDURE delete_row(
2817     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
2818     x_return_status                OUT NOCOPY VARCHAR2,
2819     x_msg_count                    OUT NOCOPY NUMBER,
2820     x_msg_data                     OUT NOCOPY VARCHAR2,
2821     p_qty_rec                      IN qty_rec_type) IS
2822 
2823     l_api_version                 CONSTANT NUMBER := 1;
2824     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
2825     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2826     l_qty_rec                      qty_rec_type:= p_qty_rec;
2827     l_row_notfound                 BOOLEAN := TRUE;
2828   BEGIN
2829     l_return_status := okl_api.START_ACTIVITY(l_api_name,
2830                                               p_init_msg_list,
2831                                               '_PVT',
2832                                               x_return_status);
2833     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2834       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2835     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2836       RAISE okl_api.G_EXCEPTION_ERROR;
2837     END IF;
2838     DELETE FROM OKL_QUESTION_TYPES_B
2839      WHERE ID = l_qty_rec.id;
2840 
2841     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
2842   EXCEPTION
2843     WHEN okl_api.G_EXCEPTION_ERROR THEN
2844       x_return_status := okl_api.HANDLE_EXCEPTIONS
2845       (
2846         l_api_name,
2847         G_PKG_NAME,
2848         'okl_api.G_RET_STS_ERROR',
2849         x_msg_count,
2850         x_msg_data,
2851         '_PVT'
2852       );
2853     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2854       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2855       (
2856         l_api_name,
2857         G_PKG_NAME,
2858         'okl_api.G_RET_STS_UNEXP_ERROR',
2859         x_msg_count,
2860         x_msg_data,
2861         '_PVT'
2862       );
2863     WHEN OTHERS THEN
2864       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2865       (
2866         l_api_name,
2867         G_PKG_NAME,
2868         'OTHERS',
2869         x_msg_count,
2870         x_msg_data,
2871         '_PVT'
2872       );
2873   END delete_row;
2874   ------------------------------------------
2875   -- delete_row for:OKL_QUESTION_TYPES_TL --
2876   ------------------------------------------
2877   PROCEDURE delete_row(
2878     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
2879     x_return_status                OUT NOCOPY VARCHAR2,
2880     x_msg_count                    OUT NOCOPY NUMBER,
2881     x_msg_data                     OUT NOCOPY VARCHAR2,
2882     p_okl_question_types_tl_rec    IN okl_question_types_tl_rec_type) IS
2883 
2884     l_api_version                 CONSTANT NUMBER := 1;
2885     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_delete_row';
2886     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2887     l_okl_question_types_tl_rec    okl_question_types_tl_rec_type:= p_okl_question_types_tl_rec;
2888     l_row_notfound                 BOOLEAN := TRUE;
2889     ----------------------------------------------
2890     -- Set_Attributes for:OKL_QUESTION_TYPES_TL --
2891     ----------------------------------------------
2892     FUNCTION Set_Attributes (
2893       p_okl_question_types_tl_rec IN  okl_question_types_tl_rec_type,
2894       x_okl_question_types_tl_rec OUT NOCOPY okl_question_types_tl_rec_type
2895     ) RETURN VARCHAR2 IS
2896       l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2897     BEGIN
2898       x_okl_question_types_tl_rec := p_okl_question_types_tl_rec;
2899       x_okl_question_types_tl_rec.LANGUAGE := USERENV('LANG');
2900       RETURN(l_return_status);
2901     END Set_Attributes;
2902   BEGIN
2903     l_return_status := okl_api.START_ACTIVITY(l_api_name,
2904                                               p_init_msg_list,
2905                                               '_PVT',
2906                                               x_return_status);
2907     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2908       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2909     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2910       RAISE okl_api.G_EXCEPTION_ERROR;
2911     END IF;
2912     --- Setting item attributes
2913     l_return_status := Set_Attributes(
2914       p_okl_question_types_tl_rec,       -- IN
2915       l_okl_question_types_tl_rec);      -- OUT
2916     --- If any errors happen abort API
2917     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2918       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2919     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2920       RAISE okl_api.G_EXCEPTION_ERROR;
2921     END IF;
2922     DELETE FROM OKL_QUESTION_TYPES_TL
2923      WHERE ID = l_okl_question_types_tl_rec.id;
2924 
2925     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
2926   EXCEPTION
2927     WHEN okl_api.G_EXCEPTION_ERROR THEN
2928       x_return_status := okl_api.HANDLE_EXCEPTIONS
2929       (
2930         l_api_name,
2931         G_PKG_NAME,
2932         'okl_api.G_RET_STS_ERROR',
2933         x_msg_count,
2934         x_msg_data,
2935         '_PVT'
2936       );
2937     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2938       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2939       (
2940         l_api_name,
2941         G_PKG_NAME,
2942         'okl_api.G_RET_STS_UNEXP_ERROR',
2943         x_msg_count,
2944         x_msg_data,
2945         '_PVT'
2946       );
2947     WHEN OTHERS THEN
2948       x_return_status :=okl_api.HANDLE_EXCEPTIONS
2949       (
2950         l_api_name,
2951         G_PKG_NAME,
2952         'OTHERS',
2953         x_msg_count,
2954         x_msg_data,
2955         '_PVT'
2956       );
2957   END delete_row;
2958   -----------------------------------------
2959   -- delete_row for:OKL_QUESTION_TYPES_V --
2960   -----------------------------------------
2961   PROCEDURE delete_row(
2962     p_api_version                  IN NUMBER,
2963     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
2964     x_return_status                OUT NOCOPY VARCHAR2,
2965     x_msg_count                    OUT NOCOPY NUMBER,
2966     x_msg_data                     OUT NOCOPY VARCHAR2,
2967     p_qtyv_rec                     IN qtyv_rec_type) IS
2968 
2969     l_api_version                 CONSTANT NUMBER := 1;
2970     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
2971     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
2972     l_qtyv_rec                     qtyv_rec_type := p_qtyv_rec;
2973     l_okl_question_types_tl_rec    okl_question_types_tl_rec_type;
2974     l_qty_rec                      qty_rec_type;
2975   BEGIN
2976     l_return_status := okl_api.START_ACTIVITY(l_api_name,
2977                                               G_PKG_NAME,
2978                                               p_init_msg_list,
2979                                               l_api_version,
2980                                               p_api_version,
2981                                               '_PVT',
2982                                               x_return_status);
2983     IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
2984       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
2985     ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
2986       RAISE okl_api.G_EXCEPTION_ERROR;
2987     END IF;
2988     --------------------------------------
2989     -- Move VIEW record to "Child" records
2990     --------------------------------------
2991     migrate(l_qtyv_rec, l_okl_question_types_tl_rec);
2992     migrate(l_qtyv_rec, l_qty_rec);
2993     --------------------------------------------
2994     -- Call the DELETE_ROW for each child record
2995     --------------------------------------------
2996     delete_row(
2997       p_init_msg_list,
2998       x_return_status,
2999       x_msg_count,
3000       x_msg_data,
3001       l_okl_question_types_tl_rec
3002     );
3003     IF (x_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
3004       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
3005     ELSIF (x_return_status = okl_api.G_RET_STS_ERROR) THEN
3006       RAISE okl_api.G_EXCEPTION_ERROR;
3007     END IF;
3008     delete_row(
3009       p_init_msg_list,
3010       x_return_status,
3011       x_msg_count,
3012       x_msg_data,
3013       l_qty_rec
3014     );
3015     IF (x_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
3016       RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
3017     ELSIF (x_return_status = okl_api.G_RET_STS_ERROR) THEN
3018       RAISE okl_api.G_EXCEPTION_ERROR;
3019     END IF;
3020     okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
3021   EXCEPTION
3022     WHEN okl_api.G_EXCEPTION_ERROR THEN
3023       x_return_status := okl_api.HANDLE_EXCEPTIONS
3024       (
3025         l_api_name,
3026         G_PKG_NAME,
3027         'okl_api.G_RET_STS_ERROR',
3028         x_msg_count,
3029         x_msg_data,
3030         '_PVT'
3031       );
3032     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
3033       x_return_status :=okl_api.HANDLE_EXCEPTIONS
3034       (
3035         l_api_name,
3036         G_PKG_NAME,
3037         'okl_api.G_RET_STS_UNEXP_ERROR',
3038         x_msg_count,
3039         x_msg_data,
3040         '_PVT'
3041       );
3042     WHEN OTHERS THEN
3043       x_return_status :=okl_api.HANDLE_EXCEPTIONS
3044       (
3045         l_api_name,
3046         G_PKG_NAME,
3047         'OTHERS',
3048         x_msg_count,
3049         x_msg_data,
3050         '_PVT'
3051       );
3052   END delete_row;
3053   ----------------------------------------
3054   -- PL/SQL TBL delete_row for:QTYV_TBL --
3055   ----------------------------------------
3056   PROCEDURE delete_row(
3057     p_api_version                  IN NUMBER,
3058     p_init_msg_list                IN VARCHAR2 DEFAULT okl_api.G_FALSE,
3059     x_return_status                OUT NOCOPY VARCHAR2,
3060     x_msg_count                    OUT NOCOPY NUMBER,
3061     x_msg_data                     OUT NOCOPY VARCHAR2,
3062     p_qtyv_tbl                     IN qtyv_tbl_type) IS
3063 
3064     l_api_version                 CONSTANT NUMBER := 1;
3065     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
3066     l_return_status                VARCHAR2(1) := okl_api.G_RET_STS_SUCCESS;
3067     i                              NUMBER := 0;
3068   BEGIN
3069     okl_api.init_msg_list(p_init_msg_list);
3070     -- Make sure PL/SQL table has records in it before passing
3071     IF (p_qtyv_tbl.COUNT > 0) THEN
3072       i := p_qtyv_tbl.FIRST;
3073       LOOP
3074         delete_row (
3075           p_api_version                  => p_api_version,
3076           p_init_msg_list                => okl_api.G_FALSE,
3077           x_return_status                => x_return_status,
3078           x_msg_count                    => x_msg_count,
3079           x_msg_data                     => x_msg_data,
3080           p_qtyv_rec                     => p_qtyv_tbl(i));
3081         EXIT WHEN (i = p_qtyv_tbl.LAST);
3082         i := p_qtyv_tbl.NEXT(i);
3083       END LOOP;
3084     END IF;
3085   EXCEPTION
3086     WHEN okl_api.G_EXCEPTION_ERROR THEN
3087       x_return_status := okl_api.HANDLE_EXCEPTIONS
3088       (
3089         l_api_name,
3090         G_PKG_NAME,
3091         'okl_api.G_RET_STS_ERROR',
3092         x_msg_count,
3093         x_msg_data,
3094         '_PVT'
3095       );
3096     WHEN okl_api.G_EXCEPTION_UNEXPECTED_ERROR THEN
3097       x_return_status :=okl_api.HANDLE_EXCEPTIONS
3098       (
3099         l_api_name,
3100         G_PKG_NAME,
3101         'okl_api.G_RET_STS_UNEXP_ERROR',
3102         x_msg_count,
3103         x_msg_data,
3104         '_PVT'
3105       );
3106     WHEN OTHERS THEN
3107       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3108       (
3109         l_api_name,
3110         G_PKG_NAME,
3111         'OTHERS',
3112         x_msg_count,
3113         x_msg_data,
3114         '_PVT'
3115       );
3116   END delete_row;
3117 END Okl_Qty_Pvt;