Re: PL/SQL UTL_RAW.CAST_TO_RAW problem reading HEX data field with utl_file
Date: Tue, 11 May 2010 06:43:01 -0700 (PDT)
Message-ID: <aec7c076-0a42-43e3-9ab6-ab006a085a50_at_11g2000prv.googlegroups.com>
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
Received on Tue May 11 2010 - 15:43:01 CEST