UTL_RAW.CAST_TO_NUMBER PL/SQL: numeric or value error [message #573852] |
Thu, 03 January 2013 11:05  |
 |
skumari
Messages: 7 Registered: January 2013 Location: NY
|
Junior Member |
|
|
Hi All,
Please help me to resolve the issue:
I am trying to convert RAW datatype to number, it gives me numeric or value error.
Here is my query.
select UTL_RAW.CAST_TO_NUMBER (UTL_RAW.BIT_AND(UTL_RAW.CAST_FROM_NUMBER(174358600),UTL_RAW.CAST_FROM_NUMBER(16777215)) ) from dual;
-- below query works fine and gives me C4004A0010 as result
select UTL_RAW.BIT_AND(UTL_RAW.CAST_FROM_NUMBER(174358600),UTL_RAW.CAST_FROM_NUMBER(16777215)) bitand from dual;
--This below query gives error as
select UTL_RAW.CAST_TO_NUMBER('C4004A0010') from dual
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.UTL_RAW", line 388
06502. 00000 - "PL/SQL: numeric or value error%s"
*Cause:
*Action:
Please advise how can i convert to number from RAW DATA Type
|
|
|
|
|
Re: UTL_RAW.CAST_TO_NUMBER PL/SQL: numeric or value error [message #573862 is a reply to message #573861] |
Thu, 03 January 2013 12:01   |
 |
Michel Cadot
Messages: 68767 Registered: March 2007 Location: Saint-Maur, France, https...
|
Senior Member Account Moderator |
|
|
SQL> select to_char(174358600,'fm0000000X') v1 from dual;
V1
---------
0A648048
1 row selected.
SQL> select to_char(16777215,'fm0000000X') v2 from dual;
V2
---------
00FFFFFF
1 row selected.
SQL> select utl_raw.bit_and(to_char(174358600,'fm0000000X'),to_char(16777215,'fm0000000X')) "BITAND" from dual;
BITAND
------------------------------------------------------------------------------------------------------------------------
00648048
1 row selected.
SQL> select to_number(utl_raw.bit_and(to_char(174358600,'fm0000000X'),to_char(16777215,'fm0000000X')),
2 'XXXXXXXX')"BITAND"
3 from dual;
BITAND
----------
6586440
1 row selected.
Regards
Michel
|
|
|
|
|
|
|
Re: UTL_RAW.CAST_TO_NUMBER PL/SQL: numeric or value error [message #574486 is a reply to message #573852] |
Thu, 10 January 2013 18:17   |
Solomon Yakobson
Messages: 3305 Registered: January 2010 Location: Connecticut, USA
|
Senior Member |
|
|
skumari wrote on Thu, 03 January 2013 12:05
-- below query works fine and gives me C4004A0010 as result
select UTL_RAW.BIT_AND(UTL_RAW.CAST_FROM_NUMBER(174358600),UTL_RAW.CAST_FROM_NUMBER(16777215)) bitand from dual;
What are you trying to achieve? Decimal 174358600 is HEX A648048. Decimal 16777215 is HEX FFFFFF. Bitand betwwen the two would be HEX 648048 (decimal 6586440), not HEX C4004A0010. All you need it to use plain bitand:
SQL> select bitand(174358600,16777215) from dual;
BITAND(174358600,16777215)
--------------------------
6586440
SY.
|
|
|
|
|
|
|