Re: PL/SQL UTL_RAW.CAST_TO_RAW problem reading HEX data field with utl_file

From: Shakespeare <whatsin_at_xs4all.nl>
Date: Tue, 11 May 2010 22:39:01 +0200
Message-ID: <4be9c06c$0$22913$e4fe514c_at_news.xs4all.nl>


Op 11-5-2010 15:43, sandeep pande schreef:

> On Apr 30, 4:42 am, Luke<luke_ai..._at_hotmail.com>  wrote:

>> Hello,
>>
>> Oracle 11.2.0.1.0 running on SunOS 5.10.
>>
>> I am encountering a PL/SQL problem with UTL_RAW.CAST_TO_RAW and can
>> use some help.
>>
>> I am reading and processing an input file that is a mix of ascii and
>> hex fields.
>>
>> Here is a snippet of the processing for the hex field in question:
>>
>> w_input_line CHAR(187); -- space for the input record
>> raw_hex_field raw(2);
>>
>> 1. UTL_FILE.GET_LINE(w_file_handle, w_input_line);
>> 2. raw_hex_field := UTL_RAW.CAST_TO_RAW (substr(w_input_line, 93,
>> 2));
>>
>> This works fine for hex values x'0009', x'000B' and x'FFFF' but has a
>> problem with x'000A':
>>
>> Here is some debugging output:
>>
>> dbms_output.put_line ('raw_hex_field: ' || '>' || raw_hex_field ||
>> '<' );
>> raw_hex_field:>0009<
>> raw_hex_field:>000B<
>> raw_hex_field:>FFFF<
>> raw_hex_field:>00< <<<<<<<<<<<<<<<<<<<<<<<<<<<<< HUH?
>> where is my 0A?
>>
>> This is what I would hope to see:
>>
>> SQL->exec dbms_output.put_line( '>' || utl_raw.cast_to_raw( chr(00)
>> || chr(10) ) || '<');
>> >000A<
>>
>> PL/SQL procedure successfully completed.
>>
>> Is it possibly interpreting x'0A' as a line feed?
>>
>> Changing the input record format is not an option for us. Can anyone
>> help to resolve this?
>>
>> TIA
>>
>> Luke
>
> Hi,
> Tough one. Its possible the byte data isn't what you think it is. Use
> the DUMP() function to get the byte values and make sure they are what
> you think.
>
> You might be on to something with the line feed idea. You can use
> DUMP() to see if the 0A is actually getting into your data.
>
>
> Regards
> Sandeep

I already pointed out that UTL_file.read_line is causing the problem here, it reads CHR(10) as an end-of-line

Shakespeare Received on Tue May 11 2010 - 22:39:01 CEST

Original text of this message