[Home] [Help]
PACKAGE BODY: APPS.HR_XML_PUB_UTILITY
Source
1 PACKAGE BODY HR_XML_PUB_UTILITY AS
2 /* $Header: perxmlpb.pkb 120.0 2006/05/01 05:21 debhatta noship $ */
3 Procedure clob_to_blob(p_clob clob
4 ,p_blob IN OUT NOCOPY blob)
5 is
6 l_proc varchar2(100):= 'hr_xml_pub_utility.clob_to_blob';
7 l_length_clob number;
8 l_offset pls_integer;
9 l_varchar_buffer varchar2(32767);
10 l_raw_buffer raw(32767);
11 l_buffer_len number:= 20000;
12 l_chunk_len number;
13 l_blob blob;
14 g_nls_db_char varchar2(60);
15
16 l_raw_buffer_len pls_integer;
17 l_blob_offset pls_integer := 1;
18
19 begin
20 hr_utility.set_location('Entered Procedure clob to blob',120);
21 select userenv('LANGUAGE') into g_nls_db_char from dual;
22 l_length_clob := dbms_lob.getlength(p_clob);
23 l_offset := 1;
24 while l_length_clob > 0 loop
25 hr_utility.trace('l_length_clob '|| l_length_clob);
26 if l_length_clob < l_buffer_len then
27 l_chunk_len := l_length_clob;
28 else
29 l_chunk_len := l_buffer_len;
30 end if;
31 DBMS_LOB.READ(p_clob,l_chunk_len,l_offset,l_varchar_buffer);
32 --l_raw_buffer := utl_raw.cast_to_raw(l_varchar_buffer);
33 l_raw_buffer := utl_raw.convert(utl_raw.cast_to_raw(l_varchar_buffer),'American_America.UTF8',g_nls_db_char);
34 l_raw_buffer_len := utl_raw.length(utl_raw.convert(utl_raw.cast_to_raw(l_varchar_buffer),'American_America.UTF8',g_nls_db_char));
35 hr_utility.trace('l_varchar_buffer '|| l_varchar_buffer);
36 --dbms_lob.write(p_blob,l_chunk_len, l_offset, l_raw_buffer);
37 dbms_lob.write(p_blob,l_raw_buffer_len, l_blob_offset, l_raw_buffer);
38 l_blob_offset := l_blob_offset + l_raw_buffer_len;
39
40 l_offset := l_offset + l_chunk_len;
41 l_length_clob := l_length_clob - l_chunk_len;
42 hr_utility.trace('l_length_blob '|| dbms_lob.getlength(p_blob));
43 end loop;
44
45 exception
46 when others then
47 hr_utility.set_location(' Leaving: ' || l_proc, 100);
48 raise;
49 end;
50
51 end HR_XML_PUB_UTILITY;