Hi,
here you go:
CREATE OR REPLACE FUNCTION HEXTONUMBER (v_HexCode IN VARCHAR2) RETURN
NUMBER IS
v_SIG NUMBER;
v_SIGValue NUMBER;
v_Token CHAR(1);
v_TokValue NUMBER;
v_Result NUMBER;
v_Index NUMBER;
BEGIN
v_Result := 0;
v_SIG := LENGTH(v_HexCode);
FOR v_Index IN REVERSE 0 .. (v_SIG - 1) LOOP
-- DBMS_OUTPUT.PUT_LINE('Stelle: ' || v_Index);
v_Token := SUBSTR(v_HexCode,(v_SIG - v_Index),1);
-- DBMS_OUTPUT.PUT_LINE('Token: ' || v_Token);
v_SIGValue := 1;
IF v_Index > 0 THEN
FOR v_Index2 IN 1 .. v_Index LOOP
v_SIGValue := v_SIGValue * 16;
END LOOP;
END IF;
IF (v_Token BETWEEN '0' AND '9') THEN
v_TokValue := TO_NUMBER(v_Token);
ELSIF (UPPER(v_Token) = 'A') THEN
v_TokValue := 10;
ELSIF (UPPER(v_Token) = 'B') THEN
v_TokValue := 11;
ELSIF (UPPER(v_Token) = 'C') THEN
v_TokValue := 12;
ELSIF (UPPER(v_Token) = 'D') THEN
v_TokValue := 13;
ELSIF (UPPER(v_Token) = 'E') THEN
v_TokValue := 14;
ELSIF (UPPER(v_Token) = 'F') THEN
v_TokValue := 15;
ELSE
RETURN -1;
END IF;
v_Result := v_Result + v_TokValue * v_SIGValue;
END LOOP;
RETURN v_Result;
END HEXTONUMBER;
/
show errors;
SELECT hextonumber('ca') FROM DUAL;
Andrey Bronfin schrieb:
>
> Dear lists !
> Does anyone have a PL/SQL procedure converting a hexadecimal value to a
> decimal one , please ?
> Thanks a lot in advance !
> DBAndrey
>
> * 03-9254520
> * 053-464562
> * mailto:[EMAIL PROTECTED]
>
> --
> Please see the official ORACLE-L FAQ: http://www.orafaq.com
> --
> Author: Andrey Bronfin
> INET: [EMAIL PROTECTED]
>
> Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051
> San Diego, California -- Public Internet access / Mailing Lists
> --------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from). You may
> also send the HELP command for other information (like subscribing).
>
> ---------------------------------------------------------
> This Mail has been checked for Viruses
> Attention: Encrypted mails can NOT be checked!
>
> **
>
> Diese Mail wurde auf Viren geprueft
> Hinweis: Verschluesselte mails koennen NICHT auf Viren geprueft werden!
> ---------------------------------------------------------
--
----------------------------
| Regards, |
| Stefan Jahnke |
| BOV AG |
| @:D2 Vodafone, Abt.: FBOM |
| Tel.: 0211/533-4893 |
----------------------------
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author: Stefan Jahnke
INET: [EMAIL PROTECTED]
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051
San Diego, California -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).