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

From: sandeep pande <sandy.soft80_at_gmail.com>
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

Original text of this message