DBA Data[Home] [Help]

PACKAGE BODY: APPS.LNS_COND_ASSIGNMENTS_PKG

Source


1 PACKAGE BODY LNS_COND_ASSIGNMENTS_PKG AS
2 /* $Header: LNS_CASGM_TBLH_B.pls 120.2.12010000.4 2008/08/29 20:12:06 mbolli ship $ */
3 
4 /* Insert_Row procedure */
5 PROCEDURE Insert_Row(
6 	X_COND_ASSIGNMENT_ID		IN OUT NOCOPY NUMBER
7 	,P_LOAN_ID		IN NUMBER
8 	,P_CONDITION_ID		IN NUMBER
9 	,P_CONDITION_DESCRIPTION		IN VARCHAR2
10 	,P_CONDITION_MET_FLAG		IN VARCHAR2
11 	,P_MANDATORY_FLAG		IN VARCHAR2
12 	,P_CREATED_BY		IN NUMBER
13 	,P_CREATION_DATE		IN DATE
14 	,P_LAST_UPDATED_BY		IN NUMBER
15 	,P_LAST_UPDATE_DATE		IN DATE
16 	,P_LAST_UPDATE_LOGIN		IN NUMBER
17 	,P_OBJECT_VERSION_NUMBER		IN NUMBER
18 	,P_FULFILLMENT_DATE		IN DATE
19 	,P_FULFILLMENT_UPDATED_BY		IN NUMBER
20 	,P_START_DATE_ACTIVE		IN DATE
21 	,P_END_DATE_ACTIVE		IN DATE
22 	,P_DISB_HEADER_ID		IN NUMBER
23 	,P_DELETE_DISABLED_FLAG		IN VARCHAR2
24 ) IS
25 
26   CURSOR l_insert is
27     SELECT ROWID FROM LNS_COND_ASSIGNMENTS
28     WHERE COND_ASSIGNMENT_ID = X_COND_ASSIGNMENT_ID ;
29 
30   l_rowid varchar2(2000);
31 
32 BEGIN
33 	INSERT INTO LNS_COND_ASSIGNMENTS
34 	(
35 		COND_ASSIGNMENT_ID
36 		,LOAN_ID
37 		,CONDITION_ID
38 		,CONDITION_MET_FLAG
39 		,MANDATORY_FLAG
40 		,CREATED_BY
41 		,CREATION_DATE
42 		,LAST_UPDATED_BY
43 		,LAST_UPDATE_DATE
44 		,LAST_UPDATE_LOGIN
45 		,OBJECT_VERSION_NUMBER
46 		,FULFILLMENT_DATE
47 		,FULFILLMENT_UPDATED_BY
48 		,START_DATE_ACTIVE
49 		,END_DATE_ACTIVE
50 		,DISB_HEADER_ID
51 		,DELETE_DISABLED_FLAG
52 	) VALUES (
53 		DECODE(X_COND_ASSIGNMENT_ID, FND_API.G_MISS_NUM, LNS_COND_ASSIGNMENTS_S.NEXTVAL, NULL, LNS_COND_ASSIGNMENTS_S.NEXTVAL, X_COND_ASSIGNMENT_ID)
54 		,DECODE(P_LOAN_ID, FND_API.G_MISS_NUM, NULL, P_LOAN_ID)
55 		,DECODE(P_CONDITION_ID, FND_API.G_MISS_NUM, NULL, P_CONDITION_ID)
56 		,DECODE(P_CONDITION_MET_FLAG, FND_API.G_MISS_CHAR, NULL, P_CONDITION_MET_FLAG)
57 		,DECODE(P_MANDATORY_FLAG, FND_API.G_MISS_CHAR, NULL, P_MANDATORY_FLAG)
58 		,LNS_UTILITY_PUB.CREATED_BY
59 		,LNS_UTILITY_PUB.CREATION_DATE
60 		,LNS_UTILITY_PUB.LAST_UPDATED_BY
61 		,LNS_UTILITY_PUB.LAST_UPDATE_DATE
62 		,LNS_UTILITY_PUB.LAST_UPDATE_LOGIN
63 		,DECODE(P_OBJECT_VERSION_NUMBER, FND_API.G_MISS_NUM, NULL, P_OBJECT_VERSION_NUMBER)
64 		,DECODE(P_FULFILLMENT_DATE, FND_API.G_MISS_DATE, NULL, P_FULFILLMENT_DATE)
65 		,DECODE(P_FULFILLMENT_UPDATED_BY, FND_API.G_MISS_NUM, NULL, P_FULFILLMENT_UPDATED_BY)
66 		,DECODE(P_START_DATE_ACTIVE, FND_API.G_MISS_DATE, NULL, P_START_DATE_ACTIVE)
67 		,DECODE(P_END_DATE_ACTIVE, FND_API.G_MISS_DATE, NULL, P_END_DATE_ACTIVE)
68 		,DECODE(P_DISB_HEADER_ID, FND_API.G_MISS_NUM, NULL, P_DISB_HEADER_ID)
69 		,DECODE(P_DELETE_DISABLED_FLAG ,FND_API.G_MISS_CHAR, NULL, P_DELETE_DISABLED_FLAG)
70 	) RETURNING
71 		 COND_ASSIGNMENT_ID
72 	 INTO
73 		 X_COND_ASSIGNMENT_ID;
74 
75           INSERT INTO LNS_COND_ASSIGNMENTS_TL (
76               COND_ASSIGNMENT_ID
77              ,CONDITION_DESCRIPTION
78              ,LANGUAGE
79              ,SOURCE_LANG
80              ,CREATED_BY
81              ,CREATION_DATE
82              ,LAST_UPDATE_DATE
83              ,LAST_UPDATED_BY
84              ,LAST_UPDATE_LOGIN
85           ) SELECT
86               X_COND_ASSIGNMENT_ID
87              ,DECODE(P_CONDITION_DESCRIPTION, FND_API.G_MISS_CHAR, NULL, P_CONDITION_DESCRIPTION)
88              ,L.LANGUAGE_CODE
89              ,userenv('LANG')
90              ,fnd_global.user_id
91              ,sysdate
92              ,sysdate
93              ,fnd_global.user_id
94              ,fnd_global.user_id
95           FROM FND_LANGUAGES L
96           where L.INSTALLED_FLAG in ('I', 'B')
97 	  AND L.LANGUAGE_CODE = userenv('LANG')
98           AND not exists
99             (select NULL
100             from LNS_COND_ASSIGNMENTS_TL T
101             where T.cond_assignment_id = x_cond_assignment_id
102             and T.LANGUAGE = L.LANGUAGE_CODE);
103 
104 
105 
106           INSERT INTO LNS_COND_ASSIGNMENTS_TL (
107               COND_ASSIGNMENT_ID
108              ,CONDITION_DESCRIPTION
109              ,LANGUAGE
110              ,SOURCE_LANG
111              ,CREATED_BY
112              ,CREATION_DATE
113              ,LAST_UPDATE_DATE
114              ,LAST_UPDATED_BY
115              ,LAST_UPDATE_LOGIN
116           ) 	 SELECT
117               X_COND_ASSIGNMENT_ID
118              ,SourceTL.CONDITION_DESCRIPTION
119              ,SourceTL.LANGUAGE
120              ,SourceTL.SOURCE_LANG
121              ,fnd_global.user_id
122              ,sysdate
123              ,sysdate
124              ,fnd_global.user_id
125              ,fnd_global.user_id
126           FROM FND_LANGUAGES L, LNS_CONDITIONS_TL SourceTL
127           where L.INSTALLED_FLAG in ('I', 'B')
128 	  and L.LANGUAGE_CODE <> userenv('LANG')
129 	  AND SourceTL.language = L.LANGUAGE_CODE
130 	  AND SourceTL.CONDITION_ID  = (
131 			SELECT CONDITION_ID FROM LNS_COND_ASSIGNMENTS
132 			WHERE COND_ASSIGNMENT_ID = X_COND_ASSIGNMENT_ID
133 	  )
134 	  AND not exists
135             (select NULL
136             from LNS_COND_ASSIGNMENTS_TL T
137             where T.cond_assignment_id = x_cond_assignment_id
138             and T.LANGUAGE = L.LANGUAGE_CODE);
139 
140 
141 
142           OPEN l_insert;
143           FETCH l_insert INTO l_rowid;
144           IF (l_insert%notfound) THEN
145             CLOSE l_insert;
146             RAISE no_data_found;
147           END IF;
148           CLOSE l_insert;
149 
150 END Insert_Row;
151 
152 /* Update_Row procedure */
153 PROCEDURE Update_Row(
154 	P_COND_ASSIGNMENT_ID		IN NUMBER
155 	,P_LOAN_ID		IN NUMBER
156 	,P_CONDITION_ID		IN NUMBER
157 	,P_CONDITION_DESCRIPTION		IN VARCHAR2
158 	,P_CONDITION_MET_FLAG		IN VARCHAR2
159 	,P_MANDATORY_FLAG		IN VARCHAR2
160 	,P_LAST_UPDATED_BY		IN NUMBER
161 	,P_LAST_UPDATE_DATE		IN DATE
162 	,P_LAST_UPDATE_LOGIN		IN NUMBER
163 	,P_OBJECT_VERSION_NUMBER		IN NUMBER
164 	,P_FULFILLMENT_DATE		IN DATE
165 	,P_FULFILLMENT_UPDATED_BY		IN NUMBER
166 	,P_START_DATE_ACTIVE		IN DATE
167 	,P_END_DATE_ACTIVE		IN DATE
168 	,P_DISB_HEADER_ID		IN NUMBER
169 	,P_DELETE_DISABLED_FLAG		IN VARCHAR2
170 ) IS
171 BEGIN
172 	UPDATE LNS_COND_ASSIGNMENTS SET
173 		LOAN_ID = DECODE(P_LOAN_ID, NULL, LOAN_ID, FND_API.G_MISS_NUM, NULL, P_LOAN_ID)
174 		,CONDITION_ID = DECODE(P_CONDITION_ID, NULL, CONDITION_ID, FND_API.G_MISS_NUM, NULL, P_CONDITION_ID)
175 		,CONDITION_MET_FLAG = DECODE(P_CONDITION_MET_FLAG, NULL, CONDITION_MET_FLAG, FND_API.G_MISS_CHAR, NULL, P_CONDITION_MET_FLAG)
176 		,MANDATORY_FLAG = DECODE(P_MANDATORY_FLAG, NULL, MANDATORY_FLAG, FND_API.G_MISS_CHAR, NULL, P_MANDATORY_FLAG)
177 		,LAST_UPDATED_BY = LNS_UTILITY_PUB.LAST_UPDATED_BY
178 		,LAST_UPDATE_DATE = LNS_UTILITY_PUB.LAST_UPDATE_DATE
179 		,LAST_UPDATE_LOGIN = LNS_UTILITY_PUB.LAST_UPDATE_LOGIN
180 		,OBJECT_VERSION_NUMBER = DECODE(P_OBJECT_VERSION_NUMBER, NULL, OBJECT_VERSION_NUMBER, FND_API.G_MISS_NUM, NULL, P_OBJECT_VERSION_NUMBER)
181 		,FULFILLMENT_DATE = DECODE(P_FULFILLMENT_DATE, NULL, FULFILLMENT_DATE, FND_API.G_MISS_DATE, NULL, P_FULFILLMENT_DATE)
182 		,FULFILLMENT_UPDATED_BY = DECODE(P_FULFILLMENT_UPDATED_BY, NULL, FULFILLMENT_UPDATED_BY, FND_API.G_MISS_NUM, NULL, P_FULFILLMENT_UPDATED_BY)
183 		,START_DATE_ACTIVE = DECODE(P_START_DATE_ACTIVE, NULL, START_DATE_ACTIVE, FND_API.G_MISS_DATE, NULL, P_START_DATE_ACTIVE)
184 		,END_DATE_ACTIVE = DECODE(P_END_DATE_ACTIVE, NULL, END_DATE_ACTIVE, FND_API.G_MISS_DATE, NULL, P_END_DATE_ACTIVE)
185 		,DISB_HEADER_ID = DECODE(P_DISB_HEADER_ID, NULL, DISB_HEADER_ID, FND_API.G_MISS_NUM, NULL, P_DISB_HEADER_ID)
186 		,DELETE_DISABLED_FLAG = DECODE(P_DELETE_DISABLED_FLAG, NULL, DELETE_DISABLED_FLAG, FND_API.G_MISS_CHAR, NULL, P_DELETE_DISABLED_FLAG )
187 	 WHERE COND_ASSIGNMENT_ID = P_COND_ASSIGNMENT_ID;
188 
189 	if (sql%notfound) then
190 		raise no_data_found;
191 	end if;
192 
193 	UPDATE LNS_COND_ASSIGNMENTS_TL SET
194 		 CONDITION_DESCRIPTION = DECODE(P_CONDITION_DESCRIPTION, NULL, CONDITION_DESCRIPTION, FND_API.G_MISS_CHAR, NULL, P_CONDITION_DESCRIPTION)
195                 ,LAST_UPDATE_DATE = sysdate
196                 ,LAST_UPDATED_BY = fnd_global.user_id
197                 ,LAST_UPDATE_LOGIN = fnd_global.user_id
198                 ,SOURCE_LANG = userenv('LANG')
199               WHERE COND_ASSIGNMENT_ID = P_COND_ASSIGNMENT_ID
200               AND userenv('LANG') in (LANGUAGE, SOURCE_LANG);
201 
202 
203 	if (sql%notfound) then
204 		raise no_data_found;
205 	end if;
206 
207 END Update_Row;
208 
209 /* Delete_Row procedure */
210 PROCEDURE Delete_Row(P_COND_ASSIGNMENT_ID IN NUMBER) IS
211 BEGIN
212 
213 	DELETE FROM LNS_COND_ASSIGNMENTS_TL
214 		WHERE COND_ASSIGNMENT_ID = P_COND_ASSIGNMENT_ID;
215 
216 	if (sql%notfound) then
217 		raise no_data_found;
218 	end if;
219 
220 	DELETE FROM LNS_COND_ASSIGNMENTS
221 		WHERE COND_ASSIGNMENT_ID = P_COND_ASSIGNMENT_ID;
222 
223 	if (sql%notfound) then
224 		raise no_data_found;
225 	end if;
226 END Delete_Row;
227 
228 /* Lock_Row procedure */
229 PROCEDURE Lock_Row(
230 	P_COND_ASSIGNMENT_ID		IN NUMBER
231 	,P_LOAN_ID		IN NUMBER
232 	,P_CONDITION_ID		IN NUMBER
233 	,P_CONDITION_DESCRIPTION		IN VARCHAR2
234 	,P_CONDITION_MET_FLAG		IN VARCHAR2
235 	,P_MANDATORY_FLAG		IN VARCHAR2
236 	,P_CREATED_BY		IN NUMBER
237 	,P_CREATION_DATE		IN DATE
238 	,P_LAST_UPDATED_BY		IN NUMBER
239 	,P_LAST_UPDATE_DATE		IN DATE
240 	,P_LAST_UPDATE_LOGIN		IN NUMBER
241 	,P_OBJECT_VERSION_NUMBER		IN NUMBER
242 	,P_FULFILLMENT_DATE		IN DATE
243 	,P_FULFILLMENT_UPDATED_BY		IN NUMBER
244 	,P_START_DATE_ACTIVE		IN DATE
245 	,P_END_DATE_ACTIVE		IN DATE
246 	,P_DISB_HEADER_ID		IN NUMBER
247 	,P_DELETE_DISABLED_FLAG		IN VARCHAR2
248 ) IS
249 	CURSOR C IS SELECT * FROM LNS_COND_ASSIGNMENTS
250 		WHERE COND_ASSIGNMENT_ID = P_COND_ASSIGNMENT_ID
251 		FOR UPDATE of COND_ASSIGNMENT_ID NOWAIT;
252 	Recinfo C%ROWTYPE;
253 
254 	CURSOR C_TL IS
255                 SELECT
256                   CONDITION_DESCRIPTION
257                   ,decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
258                 FROM LNS_COND_ASSIGNMENTS_TL
259 		WHERE COND_ASSIGNMENT_ID = P_COND_ASSIGNMENT_ID
260                 AND userenv('LANG') in (LANGUAGE, SOURCE_LANG)
261 		FOR UPDATE of COND_ASSIGNMENT_ID NOWAIT;
262 --	tlinfo C_TL%ROWTYPE;
263 
264 
265 
266 BEGIN
267 	OPEN C;
268 	FETCH C INTO Recinfo;
269 	IF (C%NOTFOUND) THEN
270 		CLOSE C;
271 		FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
272 		APP_EXCEPTION.Raise_Exception;
273 	END IF;
274 	CLOSE C;
275 
276 	IF (
277 		(Recinfo.COND_ASSIGNMENT_ID = P_COND_ASSIGNMENT_ID)
278 		AND ( (Recinfo.LOAN_ID = P_LOAN_ID)
279 			OR ( (Recinfo.LOAN_ID IS NULL)
280 				AND (P_LOAN_ID IS NULL)))
281 		AND ( (Recinfo.CONDITION_ID = P_CONDITION_ID)
282 			OR ( (Recinfo.CONDITION_ID IS NULL)
283 				AND (P_CONDITION_ID IS NULL)))
284 		AND ( (Recinfo.CONDITION_DESCRIPTION = P_CONDITION_DESCRIPTION)
285 			OR ( (Recinfo.CONDITION_DESCRIPTION IS NULL)
286 				AND (P_CONDITION_DESCRIPTION IS NULL)))
287 		AND ( (Recinfo.CONDITION_MET_FLAG = P_CONDITION_MET_FLAG)
288 			OR ( (Recinfo.CONDITION_MET_FLAG IS NULL)
289 				AND (P_CONDITION_MET_FLAG IS NULL)))
290 		AND ( (Recinfo.MANDATORY_FLAG = P_MANDATORY_FLAG)
291 			OR ( (Recinfo.MANDATORY_FLAG IS NULL)
292 				AND (P_MANDATORY_FLAG IS NULL)))
293 		AND ( (Recinfo.CREATED_BY = P_CREATED_BY)
294 			OR ( (Recinfo.CREATED_BY IS NULL)
295 				AND (P_CREATED_BY IS NULL)))
296 		AND ( (Recinfo.CREATION_DATE = P_CREATION_DATE)
297 			OR ( (Recinfo.CREATION_DATE IS NULL)
298 				AND (P_CREATION_DATE IS NULL)))
299 		AND ( (Recinfo.LAST_UPDATED_BY = P_LAST_UPDATED_BY)
300 			OR ( (Recinfo.LAST_UPDATED_BY IS NULL)
301 				AND (P_LAST_UPDATED_BY IS NULL)))
302 		AND ( (Recinfo.LAST_UPDATE_DATE = P_LAST_UPDATE_DATE)
303 			OR ( (Recinfo.LAST_UPDATE_DATE IS NULL)
304 				AND (P_LAST_UPDATE_DATE IS NULL)))
305 		AND ( (Recinfo.LAST_UPDATE_LOGIN = P_LAST_UPDATE_LOGIN)
306 			OR ( (Recinfo.LAST_UPDATE_LOGIN IS NULL)
307 				AND (P_LAST_UPDATE_LOGIN IS NULL)))
308 		AND ( (Recinfo.OBJECT_VERSION_NUMBER = P_OBJECT_VERSION_NUMBER)
309 			OR ( (Recinfo.OBJECT_VERSION_NUMBER IS NULL)
310 				AND (P_OBJECT_VERSION_NUMBER IS NULL)))
311 		AND ( (Recinfo.FULFILLMENT_DATE = P_FULFILLMENT_DATE)
312 			OR ( (Recinfo.FULFILLMENT_DATE IS NULL)
313 				AND (P_FULFILLMENT_DATE IS NULL)))
314 		AND ( (Recinfo.FULFILLMENT_UPDATED_BY = P_FULFILLMENT_UPDATED_BY)
315 			OR ( (Recinfo.FULFILLMENT_UPDATED_BY IS NULL)
316 				AND (P_FULFILLMENT_UPDATED_BY IS NULL)))
317 		AND ( (Recinfo.START_DATE_ACTIVE = P_START_DATE_ACTIVE)
318 			OR ( (Recinfo.START_DATE_ACTIVE IS NULL)
319 				AND (P_START_DATE_ACTIVE IS NULL)))
320 		AND ( (Recinfo.END_DATE_ACTIVE = P_END_DATE_ACTIVE)
321 			OR ( (Recinfo.END_DATE_ACTIVE IS NULL)
322 				AND (P_END_DATE_ACTIVE IS NULL)))
323 		AND ( (Recinfo.DISB_HEADER_ID = P_DISB_HEADER_ID)
324                         OR ( (Recinfo.DISB_HEADER_ID IS NULL)
325                                 AND (P_DISB_HEADER_ID IS NULL)))
326 		AND ( (Recinfo.DELETE_DISABLED_FLAG = P_DELETE_DISABLED_FLAG)
327                         OR ( (Recinfo.DELETE_DISABLED_FLAG IS NULL)
328                                 AND (P_DELETE_DISABLED_FLAG IS NULL)))
329 	   ) THEN
330 		return;
331 	ELSE
332 		FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
333 		APP_EXCEPTION.Raise_Exception;
334 	END IF;
335 
336         FOR tlinfo in C_TL LOOP
337           IF (tlinfo.BASELANG = 'Y') THEN
338             if ((tlinfo.CONDITION_DESCRIPTION = P_CONDITION_DESCRIPTION)
339                      OR ((tlinfo.CONDITION_DESCRIPTION is null) AND (P_CONDITION_DESCRIPTION is null)))
340              THEN
341               null;
342             ELSE
343 		FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
344 		APP_EXCEPTION.Raise_Exception;
345             END IF;
346           END IF;
347         END LOOP;
348 
349 END Lock_Row;
350 
351 procedure ADD_LANGUAGE
352 is
353 begin
354   delete from LNS_COND_ASSIGNMENTS_TL T
355   where not exists
356     (select NULL
357     from LNS_COND_ASSIGNMENTS B
358     where B.COND_ASSIGNMENT_ID = T.COND_ASSIGNMENT_ID
359     );
360 
361   update LNS_COND_ASSIGNMENTS_TL T set (
362       CONDITION_DESCRIPTION
363     ) = (select
364       B.CONDITION_DESCRIPTION
365     from LNS_COND_ASSIGNMENTS_TL B
366     where B.COND_ASSIGNMENT_ID = T.COND_ASSIGNMENT_ID
367     and B.LANGUAGE = T.SOURCE_LANG)
368   where (
369       T.COND_ASSIGNMENT_ID,
370       T.LANGUAGE
371   ) in (select
372       SUBT.COND_ASSIGNMENT_ID,
373       SUBT.LANGUAGE
374     from LNS_COND_ASSIGNMENTS_TL SUBB, LNS_COND_ASSIGNMENTS_TL SUBT
375     where SUBB.COND_ASSIGNMENT_ID = SUBT.COND_ASSIGNMENT_ID
376     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
377     and (SUBB.CONDITION_DESCRIPTION <> SUBT.CONDITION_DESCRIPTION
378       or (SUBB.CONDITION_DESCRIPTION is null and SUBT.CONDITION_DESCRIPTION is not null)
379       or (SUBB.CONDITION_DESCRIPTION is not null and SUBT.CONDITION_DESCRIPTION is null)
380   ));
381 
382   insert into LNS_COND_ASSIGNMENTS_TL (
383     COND_ASSIGNMENT_ID,
384     CONDITION_DESCRIPTION,
385     LAST_UPDATE_DATE,
386     LAST_UPDATED_BY,
387     CREATION_DATE,
388     CREATED_BY,
389     LAST_UPDATE_LOGIN,
390     LANGUAGE,
391     SOURCE_LANG
392   ) select
393     B.COND_ASSIGNMENT_ID,
394     CONDITION_DESCRIPTION,
395     B.LAST_UPDATE_DATE,
396     B.LAST_UPDATED_BY,
397     B.CREATION_DATE,
398     B.CREATED_BY,
399     B.LAST_UPDATE_LOGIN,
400     L.LANGUAGE_CODE,
401     B.SOURCE_LANG
402   from LNS_COND_ASSIGNMENTS_TL B, FND_LANGUAGES L
403   where L.INSTALLED_FLAG in ('I', 'B')
404   and B.LANGUAGE = userenv('LANG')
405   and not exists
406     (select NULL
407     from LNS_COND_ASSIGNMENTS_TL T
408     where T.COND_ASSIGNMENT_ID = B.COND_ASSIGNMENT_ID
409     and T.LANGUAGE = L.LANGUAGE_CODE);
410 
411 end ADD_LANGUAGE;
412 
413 END;
414