[Home] [Help]
PACKAGE BODY: APPS.FA_CMP_STRING_PKG
Source
1 PACKAGE BODY fa_cmp_string_pkg AS
2 /* $Header: facpstrb.pls 120.0 2006/03/06 22:15:17 bridgway noship $ */
3 /*===========================================================================+
4 | Copyright (c) 2001-2002 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +============================================================================+
8 | PACKAGE NAME |
9 | fa_cmp_string_pkg |
10 | |
11 | DESCRIPTION |
12 | This is a FA private package, which contains all the logic required |
13 | to handle the text generated by the compiler |
14 | |
15 | HISTORY |
16 | 25-FEB-2006 BRIDGWAY Created |
17 +===========================================================================*/
18
19 --+==========================================================================+
20 --| |
21 --| OVERVIEW of private procedures and functions |
22 --| |
23 --+==========================================================================+
24
25 g_Max_line CONSTANT NUMBER := 255;
26 g_chr_quote CONSTANT VARCHAR2(9) := '''';
27 g_chr_space CONSTANT VARCHAR2(9) := ' ';
28 G_MAX_PACKAGE_LINE_LENGTH CONSTANT INTEGER := 255;
29
30 --=============================================================================
31 -- *********** Local Trace Routine **********
32 --=============================================================================
33
34 G_CURRENT_RUNTIME_LEVEL NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
35
36 G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
37 G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
38 G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
39 G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
40 G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
41 G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
42
43 G_MODULE_NAME CONSTANT VARCHAR2(50):= 'fa.plsql.fa_cmp_string_pkg';
44
45 --+==========================================================================+
46 --| |
47 --| PUBLIC Function |
48 --| |
49 --+==========================================================================+
50
51 FUNCTION ConcatTwoStrings (
52 p_array_string_1 IN DBMS_SQL.VARCHAR2S
53 ,p_array_string_2 IN DBMS_SQL.VARCHAR2S
54 ) RETURN DBMS_SQL.VARCHAR2S IS
55
56 l_array_string DBMS_SQL.VARCHAR2S;
57 l_Index BINARY_INTEGER;
58 l_procedure_name varchar2(80) := 'ConcatTwoStrings';
59
60 BEGIN
61
62 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
63 fnd_log.string(G_LEVEL_PROCEDURE,
64 G_MODULE_NAME||l_procedure_name||'.begin',
65 'Beginning of procedure');
66 END IF;
67
68
69 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
70 fnd_log.string(G_LEVEL_STATEMENT,
71 G_MODULE_NAME||l_procedure_name,
72 'LENGTH string 1 = '||p_array_string_1.COUNT);
73 fnd_log.string(G_LEVEL_STATEMENT,
74 G_MODULE_NAME||l_procedure_name,
75 'LENGTH string 2 = '||p_array_string_2.COUNT);
76 END IF;
77
78 l_array_string := p_array_string_1;
79
80 IF p_array_string_2.COUNT > 0 THEN
81
82 l_Index := NVL(l_array_string.LAST,0);
83
84 FOR Idx IN p_array_string_2.FIRST .. p_array_string_2.LAST LOOP
85
86 IF p_array_string_2.EXISTS(Idx) THEN
87
88 l_Index := l_Index + 1;
89 l_array_string(l_Index) := p_array_string_2(Idx);
90
91 END IF;
92
93 END LOOP;
94
95 END IF;
96
97 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
98 fnd_log.string(G_LEVEL_STATEMENT,
99 G_MODULE_NAME||l_procedure_name,
100 'LENGTH result = '||l_array_string.COUNT);
101 END IF;
102
103 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
104 fnd_log.string(G_LEVEL_PROCEDURE,
105 G_MODULE_NAME||l_procedure_name||'.end',
106 'End of procedure');
107 END IF;
108
109 RETURN l_array_string;
110
111 EXCEPTION
112 WHEN OTHERS THEN
113 IF (G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL ) THEN
114 fnd_message.set_name('OFA','FA_SHARED_ORACLE_ERR');
115 fnd_message.set_token('ORACLE_ERR',SQLERRM);
116 FND_LOG.MESSAGE (G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_procedure_name,TRUE);
117 END IF;
118 raise;
119
120 END ConcatTwoStrings;
121
122
123 --+==========================================================================+
124 --| PRIVATE procedures and functions |
125 --| CreateString |
126 --| transforms CLOB lines (length > 255) into a list of lines not |
127 --| exceeding 255 characters |
128 --| |
129 --| Modified this procedure to improve performance bug 3918467 |
130 --+==========================================================================+
131
132 PROCEDURE CreateString
133 (p_package_text IN CLOB
134 ,p_array_string OUT NOCOPY DBMS_SQL.VARCHAR2S) IS
135
136 l_Text VARCHAR2(32000);
137 l_SubText VARCHAR2(256);
138
139 l_MaxLine NUMBER := 255;
140
141 l_NewLine BOOLEAN;
142 l_Literal BOOLEAN;
143 l_Space BOOLEAN;
144
145 l_pos NUMBER ;
146
147 l_Idx BINARY_INTEGER;
148 l_array_string DBMS_SQL.VARCHAR2S;
149 l_procedure_name varchar2(80) := 'CreateString';
150
151 l_clob_string CLOB;
152 l_maxLength NUMBER := 8000;
153
154 l_length number;
155 l_iteration number;
156
157 BEGIN
158
159 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
160 fnd_log.string(G_LEVEL_PROCEDURE,
161 G_MODULE_NAME||l_procedure_name||'.begin',
162 'Beginning of procedure');
163 END IF;
164
165 l_clob_string := p_package_text;
166
167 l_pos := 0;
168 l_NewLine := FALSE;
169 l_Literal := FALSE;
170 l_Space := FALSE;
171 l_Idx := 0;
172
173 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
174 fnd_log.string(G_LEVEL_STATEMENT,
175 G_MODULE_NAME||l_procedure_name,
176 'Begin looping....');
177 END IF;
178
179 WHILE length(l_clob_string) > 0 LOOP
180
181 l_text := substr(l_clob_string,1,l_maxLength);
182
183 WHILE ( LENGTH(l_Text) >= l_MaxLine ) LOOP
184 BEGIN
185
186 l_SubText := SUBSTR(l_Text,1,l_MaxLine);
187 l_pos := INSTR(l_SubText,g_chr_newline,1,1);
188
189 IF l_pos = 0 THEN
190 l_NewLine := FALSE;
191 l_pos := INSTR(l_SubText,g_chr_quote,1,1);
192 IF l_pos = 0 THEN
193 l_Literal := FALSE;
194 l_pos := INSTR(l_SubText,g_chr_space,1,1);
195 l_Space := (l_pos = 0);
196 ELSE
197 l_Literal := TRUE;
198 END IF;
199 ELSE
200 l_NewLine := TRUE;
201 END IF;
202
203 IF l_newline THEN
204 l_Idx := l_Idx + 1;
205 l_array_string(l_Idx) := SUBSTR(l_SubText,1,l_pos);
206 l_Text := SUBSTR(l_Text,l_pos + 1);
207 ELSIF l_Literal THEN
208 l_Idx := l_Idx + 1;
209 l_array_string(l_Idx) := SUBSTR(l_SubText,1,l_pos-1) || g_chr_newline;
210 l_Text := SUBSTR(l_Text,l_pos);
211 ELSIF l_Space THEN
212 l_Idx := l_Idx + 1;
213 l_array_string(l_Idx) := SUBSTR(l_SubText,1,l_pos-1) || g_chr_newline;
214 l_Text := SUBSTR(l_Text,l_pos + 1);
215 ELSE
216 l_Idx := l_Idx + 1;
217 l_array_string(l_Idx) := l_SubText;
218 l_Text := SUBSTR(l_Text,l_MaxLine + 1);
219 END IF;
220 END;
221 END LOOP;
222
223 IF (length(l_clob_string)-l_maxLength) >= 0 THEN
224 l_clob_string := substr(l_clob_string,(l_maxLength - length(l_Text) + 1));
225 ELSE
226 l_clob_string := NULL;
227 l_Idx := l_Idx + 1;
228 l_array_string(l_Idx) := l_Text;
229 END IF;
230
231 END LOOP;
232
233 p_array_string := l_array_string;
234
235 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
236 fnd_log.string(G_LEVEL_PROCEDURE,
237 G_MODULE_NAME||l_procedure_name||'.end',
238 'End of procedure');
239 END IF;
240
241 END CreateString;
242
243 --+==========================================================================+
244 --| PRIVATE procedures and functions |
245 --| AddNewLine |
246 --| transforms CLOB lines (length > 255) into a list of lines not |
247 --| exceeding 255 characters |
248 --| |
249 --| |
250 --+==========================================================================+
251
252 PROCEDURE AddNewLine(p_array_string IN OUT NOCOPY DBMS_SQL.VARCHAR2S) IS
253
254 l_Idx BINARY_INTEGER;
255 l_array_string DBMS_SQL.VARCHAR2S;
256 l_procedure_name varchar2(80) := 'AddNewLine';
257
258 BEGIN
259
260 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
261 fnd_log.string(G_LEVEL_PROCEDURE,
262 G_MODULE_NAME||l_procedure_name||'.begin',
263 'Beginning of procedure');
264 END IF;
265
266 l_array_string := p_array_string;
267
268 IF l_array_string.COUNT > 0 THEN
269
270 FOR Idx IN l_array_string.FIRST .. l_array_string.LAST LOOP
271
272 IF l_array_string.EXISTS(Idx) THEN
273
274 IF SUBSTR(l_array_string(Idx),LENGTH(l_array_string(Idx))) <> g_chr_newline THEN
275
276 l_array_string(Idx) := l_array_string(Idx) || g_chr_newline;
277
278 END IF;
279
280 END IF;
281
282 END LOOP;
283
284 END IF;
285
286 p_array_string := l_array_string;
287
288 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
289 fnd_log.string(G_LEVEL_PROCEDURE,
290 G_MODULE_NAME||l_procedure_name||'.end',
291 'End of procedure');
292 END IF;
293
294 EXCEPTION
295
296 WHEN OTHERS THEN
297 IF (G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL ) THEN
298 fnd_message.set_name('OFA','FA_SHARED_ORACLE_ERR');
299 fnd_message.set_token('ORACLE_ERR',SQLERRM);
300 FND_LOG.MESSAGE (G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_procedure_name,TRUE);
301 END IF;
302 raise;
303
304 END AddNewLine;
305
309 --| truncate_lines |
306
307 --+==========================================================================+
308 --| PRIVATE procedures and functions |
310 --| transforms CLOB lines (length > 255) into a list of lines not |
311 --| exceeding 255 characters, this constraint was inposed by MRC product |
312 --| |
313 --| |
314 --+==========================================================================+
315
316 PROCEDURE truncate_lines(p_package_text IN OUT NOCOPY CLOB) IS
317
318
319 l_Text CLOB;
320 l_SubText VARCHAR2(256);
321
322 l_MaxLine NUMBER := g_Max_line;
323
324 l_NewLine BOOLEAN;
325 l_Literal BOOLEAN;
326 l_Space BOOLEAN;
327
328 l_pos NUMBER ;
329
330 l_Output CLOB;
331 l_procedure_name varchar2(80) := 'truncate_lines';
332
333
334 BEGIN
335
336 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
337 fnd_log.string(G_LEVEL_PROCEDURE,
338 G_MODULE_NAME||l_procedure_name||'.begin',
339 'Beginning of procedure');
340 END IF;
341
342
343 l_Text := p_package_text;
344 l_pos := 0;
345 l_NewLine := FALSE;
346 l_Literal := FALSE;
347 l_Space := FALSE;
348 l_Output := NULL;
349
350 WHILE ( LENGTH(l_Text) >= l_MaxLine ) LOOP
351
352 BEGIN
353
354 l_SubText := SUBSTR(l_Text,1,l_MaxLine);
355 l_pos := INSTR(l_SubText,g_chr_newline,1,1);
356
357 IF l_pos = 0 THEN
358
359 l_NewLine := FALSE;
360 l_pos := INSTR(l_SubText,g_chr_quote,1,1);
361
362 IF l_pos = 0 THEN
363
364 l_Literal := FALSE;
365 l_pos := INSTR(l_SubText,g_chr_space,1,1);
366 l_Space := (l_pos = 0);
367
368 ELSE
369
370 l_Literal := TRUE;
371
372 END IF;
373
374 ELSE
375
376 l_NewLine := TRUE;
377
378 END IF;
379
380
381 IF l_newline THEN
382
383 l_Output := l_Output || SUBSTR(l_SubText,1,l_pos);
384 l_Text := SUBSTR(l_Text,l_pos + 1);
385
386 ELSIF l_Literal THEN
387
388 l_Output := l_Output || SUBSTR(l_SubText,1,l_pos-1) || g_chr_newline;
389 l_Text := SUBSTR(l_Text,l_pos);
390
391 ELSIF l_Space THEN
392
393 l_Output := l_Output || SUBSTR(l_SubText,1,l_pos-1) || g_chr_newline;
394 l_Text := SUBSTR(l_Text,l_pos + 1);
395
396 ELSE
397
398 l_Output := l_Output || l_SubText;
399 l_Text := SUBSTR(l_Text,l_MaxLine + 1);
400
401 END IF;
402
403 END;
404
405 END LOOP;
406
407
408 IF LENGTH(l_Text) > 0 THEN
409
410 l_Output := l_Output|| l_Text;
411
412 END IF;
413
414 p_package_text := l_Output;
415
416 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
417 fnd_log.string(G_LEVEL_PROCEDURE,
418 G_MODULE_NAME||l_procedure_name||'.end',
419 'End of procedure');
420 END IF;
421
422 EXCEPTION
423 WHEN OTHERS THEN
424 IF (G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL ) THEN
425 fnd_message.set_name('OFA','FA_SHARED_ORACLE_ERR');
426 fnd_message.set_token('ORACLE_ERR',SQLERRM);
427 FND_LOG.MESSAGE (G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_procedure_name,TRUE);
428 END IF;
429 raise;
430
431 END truncate_lines;
432
433 --+==========================================================================+
434 --| |
435 --| PUBLIC Procedure |
436 --| |
437 --+==========================================================================+
438
439 PROCEDURE DumpLines (p_array_output_string IN DBMS_SQL.VARCHAR2S) IS
440
441 l_array_string DBMS_SQL.VARCHAR2S;
442 l_procedure_name varchar2(80) := 'DumpLines';
443
444 BEGIN
445
446 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
447 fnd_log.string(G_LEVEL_PROCEDURE,
448 G_MODULE_NAME||l_procedure_name||'.begin',
449 'Beginning of procedure');
450 END IF;
451
452 IF p_array_output_string.COUNT > 0 THEN
453
454 FOR Idx IN p_array_output_string.FIRST .. p_array_output_string.LAST LOOP
455
456 IF p_array_output_string.EXISTS(Idx) THEN
457
458 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
459 fnd_log.string(G_LEVEL_STATEMENT,
460 G_MODULE_NAME||l_procedure_name,
461 RPAD(Idx,10,' ')||' '||p_array_output_string(Idx));
462 END IF;
463
464 END IF;
465
466 END LOOP;
467
468 END IF;
469
473 'End of procedure');
470 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
471 fnd_log.string(G_LEVEL_PROCEDURE,
472 G_MODULE_NAME||l_procedure_name||'.end',
474 END IF;
475
476 EXCEPTION
477 WHEN OTHERS THEN
478 IF (G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL ) THEN
479 fnd_message.set_name('OFA','FA_SHARED_ORACLE_ERR');
480 fnd_message.set_token('ORACLE_ERR',SQLERRM);
481 FND_LOG.MESSAGE (G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_procedure_name,TRUE);
482 END IF;
483 raise;
484
485
486 END DumpLines;
487
488 --+==========================================================================+
489 --| |
490 --| PUBLIC Procedure |
491 --| |
492 --+==========================================================================+
493
494 FUNCTION replace_token
495 (p_original_text IN CLOB
496 ,p_token IN VARCHAR2
497 ,p_replacement_text IN CLOB) RETURN CLOB IS
498
499 l_found_position INTEGER;
500 l_return_value CLOB;
501 l_procedure_name varchar2(80) := 'replace_token';
502
503 BEGIN
504
505 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
506 fnd_log.string(G_LEVEL_PROCEDURE,
507 G_MODULE_NAME||l_procedure_name||'.begin',
508 'Beginning of procedure');
509 END IF;
510
511
512 -- Copy the original clob into a local variable
513 l_return_value := p_original_text;
514
515
516 -- Find the first occurrence of the token
517 l_found_position := INSTR(l_return_value, p_token);
518
519
520 -- If not found exit
521 IF l_found_position = 0 OR l_found_position IS NULL THEN
522 NULL;
523 ELSE
524 -- Extract the portions around the token and embed the replacement
525 -- Bug 4444678. Used the iterative call to replace_token
526
527 l_return_value := SUBSTR(l_return_value ,1 ,l_found_position - 1) ||
528 p_replacement_text ||
529 replace_token
530 (SUBSTR(l_return_value,l_found_position + LENGTH(p_token))
531 ,p_token
532 ,p_replacement_text);
533 END IF;
534
535 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
536 fnd_log.string(G_LEVEL_PROCEDURE,
537 G_MODULE_NAME||l_procedure_name||'.end',
538 'End of procedure');
539 END IF;
540
541 RETURN l_return_value;
542
543 EXCEPTION
544 WHEN OTHERS THEN
545 IF (G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL ) THEN
546 fnd_message.set_name('OFA','FA_SHARED_ORACLE_ERR');
547 fnd_message.set_token('ORACLE_ERR',SQLERRM);
548 FND_LOG.MESSAGE (G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_procedure_name,TRUE);
549 END IF;
550 raise;
551
552 END replace_token;
553
554
555 PROCEDURE clob_to_varchar2s
556 (
557 p_clob IN CLOB
558 ,p_varchar2s OUT NOCOPY DBMS_SQL.VARCHAR2S
559 )
560 IS
561 l_current_table_index PLS_INTEGER;
562 l_current_pos_in_clob PLS_INTEGER;
563 l_next_newline_pos PLS_INTEGER;
564 l_clob_length PLS_INTEGER;
565 l_subarray DBMS_SQL.VARCHAR2S;
566 l_procedure_name varchar2(80) := 'replace_token';
567
568 BEGIN
569
570 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
571 fnd_log.string(G_LEVEL_PROCEDURE,
572 G_MODULE_NAME||l_procedure_name||'.begin',
573 'Beginning of procedure');
574 END IF;
575
576 l_clob_length := LENGTH(p_clob);
577 l_current_table_index := -1;
578 l_current_pos_in_clob := 1;
579
580 WHILE l_current_pos_in_clob < l_clob_length LOOP
581 l_current_table_index := l_current_table_index + 1;
582 l_next_newline_pos := INSTR
583 ( p_clob --clob to search
584 ,g_chr_newline --character to look for
585 ,l_current_pos_in_clob --starting position
586 ,1 --occurrence
587 );
588
589 IF l_next_newline_pos = 0 THEN
590 --no new line found, take all the string to the end
591 --if the length of the substring exceeds the maximum
592 --break it into substrings
593 IF (l_clob_length - l_current_pos_in_clob + 1 )
594 <= G_MAX_PACKAGE_LINE_LENGTH THEN
595 --the chunk length is within the maximum
596 p_varchar2s(l_current_table_index) := SUBSTR
597 ( p_clob
598 ,l_current_pos_in_clob
599 );
600 ELSE
601 CreateString
602 (
603 p_package_text => SUBSTR
604 ( p_clob
605 ,l_current_pos_in_clob
606 )
607 ,p_array_string => l_subarray
608 );
609 FOR i IN l_subarray.FIRST..l_subarray.LAST LOOP
610 IF i > l_subarray.FIRST THEN
611 l_current_table_index := l_current_table_index + 1;
615 END IF;
612 END IF;
613 p_varchar2s(l_current_table_index) := l_subarray(i);
614 END LOOP;
616
617 l_current_pos_in_clob := l_clob_length;
618
619 ELSIF l_next_newline_pos IS NULL THEN
620 --probably offset > LOBMAXSIZE
621 NULL;
622 --raise exception
623 ELSE
624 IF (l_next_newline_pos - l_current_pos_in_clob + 1 )
625 <= G_MAX_PACKAGE_LINE_LENGTH
626 THEN
627 --take the portion
628 p_varchar2s(l_current_table_index) := SUBSTR
629 ( p_clob
630 ,l_current_pos_in_clob
631 ,l_next_newline_pos
632 - l_current_pos_in_clob
633 + 1
634 );
635 ELSE
636 CreateString
637 (
638 p_package_text => SUBSTR
639 ( p_clob
640 ,l_current_pos_in_clob
641 ,l_next_newline_pos
642 - l_current_pos_in_clob
643 + 1
644 )
645 ,p_array_string => l_subarray
646 );
647 FOR i IN l_subarray.FIRST..l_subarray.LAST
648 LOOP
649 IF i > l_subarray.FIRST
650 THEN
651 l_current_table_index := l_current_table_index + 1;
652 END IF;
653 p_varchar2s(l_current_table_index) := l_subarray(i);
654 END LOOP;
655 END IF;
656
657 l_current_pos_in_clob := l_next_newline_pos + 1;
658
659 END IF;
660 END LOOP;
661
662 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
663 fnd_log.string(G_LEVEL_PROCEDURE,
664 G_MODULE_NAME||l_procedure_name||'.end',
665 'End of procedure');
666 END IF;
667
668 EXCEPTION
669 WHEN OTHERS THEN
670 IF (G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL ) THEN
671 fnd_message.set_name('OFA','FA_SHARED_ORACLE_ERR');
672 fnd_message.set_token('ORACLE_ERR',SQLERRM);
673 FND_LOG.MESSAGE (G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_procedure_name,TRUE);
674 END IF;
675 raise;
676
677 END clob_to_varchar2s;
678
679 --=============================================================================
680
681 END fa_cmp_string_pkg;