Social Buttons

LightBlog

Breaking

LightBlog

samedi 6 juin 2020

Provides some base conversion funct

aws-senior.com
-- Description : Provides some base conversion functions.
-- Description : Provides some base conversion functions.


CREATE OR REPLACE PACKAGE conversion_api AS
-- --------------------------------------------------------------------------
-- Author : aws-senior.com
-- Description : Provides some base conversion functions.
-- Ammedments :
-- When Who What
-- =========== ======== =================================================
-- 10-SEP-2003 aws-senior.com Initial Creation
-- --------------------------------------------------------------------------

FUNCTION to_base(p_dec IN NUMBER,
p_base IN NUMBER) RETURN VARCHAR2;

FUNCTION to_dec (p_str IN VARCHAR2,
p_from_base IN NUMBER DEFAULT 16) RETURN NUMBER;

FUNCTION to_hex(p_dec IN NUMBER) RETURN VARCHAR2;

FUNCTION to_bin(p_dec IN NUMBER) RETURN VARCHAR2;

FUNCTION to_oct(p_dec IN NUMBER) RETURN VARCHAR2;

END conversion_api;
/
SHOW ERRORS


CREATE OR REPLACE PACKAGE BODY conversion_api AS
-- --------------------------------------------------------------------------
-- Author : aws-senior.com
-- Description : Provides some base conversion functions.
-- Ammedments :
-- When Who What
-- =========== ======== =================================================
-- 10-SEP-2003 aws-senior.com Initial Creation
-- --------------------------------------------------------------------------



-- ----------------------------------------------------------------------------
FUNCTION to_base(p_dec IN NUMBER,
p_base IN NUMBER) RETURN VARCHAR2 IS
-- ----------------------------------------------------------------------------
l_str VARCHAR2(255) DEFAULT NULL;
l_num NUMBER DEFAULT p_dec;
l_hex VARCHAR2(16) DEFAULT '0123456789ABCDEF';
BEGIN
IF (TRUNC(p_dec) <> p_dec OR p_dec < 0) THEN
RAISE PROGRAM_ERROR;
END IF;
LOOP
l_str := SUBSTR(l_hex, MOD(l_num,p_base)+1, 1) || l_str;
l_num := TRUNC(l_num/p_base);
EXIT WHEN (l_num = 0);
END LOOP;
RETURN l_str;
END to_base;
-- ----------------------------------------------------------------------------


-- ----------------------------------------------------------------------------
FUNCTION to_dec (p_str IN VARCHAR2,
p_from_base IN NUMBER DEFAULT 16) RETURN NUMBER IS
-- ----------------------------------------------------------------------------
l_num NUMBER DEFAULT 0;
l_hex VARCHAR2(16) DEFAULT '0123456789ABCDEF';
BEGIN
FOR i IN 1 .. LENGTH(p_str) LOOP
l_num := l_num * p_from_base + INSTR(l_hex,UPPER(SUBSTR(p_str,i,
1)))-1;
END LOOP;
RETURN l_num;
END to_dec;
-- ----------------------------------------------------------------------------


-- ----------------------------------------------------------------------------
FUNCTION to_hex(p_dec IN NUMBER) RETURN VARCHAR2 IS
-- ----------------------------------------------------------------------------
BEGIN
RETURN to_base(p_dec, 16);
END to_hex;
-- ----------------------------------------------------------------------------


-- ----------------------------------------------------------------------------
FUNCTION to_bin(p_dec IN NUMBER) RETURN VARCHAR2 IS
-- ----------------------------------------------------------------------------
BEGIN
RETURN to_base(p_dec, 2);
END to_bin;
-- ----------------------------------------------------------------------------


-- ----------------------------------------------------------------------------
FUNCTION to_oct(p_dec IN NUMBER) RETURN VARCHAR2 IS
-- ----------------------------------------------------------------------------
BEGIN
RETURN to_base(p_dec, 8);
END to_oct;
-- ----------------------------------------------------------------------------

END conversion_api;
/
SHOW ERRORS


--------------------------------------------------------------------------------------
-- File Name : https://github.com/Zaalouni/OracleDba
-- Author : Zaalouni
-- website : www.aws-senior.com
-- Github : https://github.com/Zaalouni/OracleDba
--------------------------------------------------------------------------------------

aws-senior.com

aws-senior.com

www.aws-senior.com
Visite out website www.aws-senior.com
http://www.aws-senior.com
www.aws-senior.com

Aucun commentaire:

Enregistrer un commentaire

Nombre total de pages vues

Adbox