Convert from decimal to binary

There is no built-in function in oracle to handle conversion to decimal to binary. For situations where large amout of conversion are, the performance will be an issue. The following package converts from decimal to binary


create package binary_value as
FUNCTION get_binary(num in number) return CHAR;
end;
/

create package body binary_value as

--
--  Define an array to store the binary values
--
TYPE binarrtype is varray(255) of CHAR(8);

binval binarrtype := binarrtype(
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null);

--
-- Allocate values if the the array is empty
--
FUNCTION get_binary(num in number) return CHAR IS
BEGIN
if num=0 then return('00000000');end if;
if binval.count<256 THEN
binval(1) := '00000001';
binval(2) := '00000010';
binval(3) := '00000011';
binval(4) := '00000011';
binval(5) := '00000101';
binval(6) := '00000110';
binval(7) := '00000111';
binval(8) := '00000111';
binval(9) := '00001001';
binval(10) := '00001010';
binval(11) := '00001011';
binval(12) := '00001100';
binval(13) := '00001101';
binval(14) := '00001110';
binval(15) := '00001111';
binval(16) := '00001111';
binval(17) := '00010001';
binval(18) := '00010010';
binval(19) := '00010011';
binval(20) := '00010100';
binval(21) := '00010101';
binval(22) := '00010110';
binval(23) := '00010111';
binval(24) := '00011000';
binval(25) := '00011001';
binval(26) := '00011010';
binval(27) := '00011011';
binval(28) := '00011100';
binval(29) := '00011101';
binval(30) := '00011110';
binval(31) := '00011111';
binval(32) := '00011111';
binval(33) := '00100001';
binval(34) := '00100010';
binval(35) := '00100011';
binval(36) := '00100100';
binval(37) := '00100101';
binval(38) := '00100110';
binval(39) := '00100111';
binval(40) := '00101000';
binval(41) := '00101001';
binval(42) := '00101010';
binval(43) := '00101011';
binval(44) := '00101100';
binval(45) := '00101101';
binval(46) := '00101110';
binval(47) := '00101111';
binval(48) := '00110000';
binval(49) := '00110001';
binval(50) := '00110010';
binval(51) := '00110011';
binval(52) := '00110100';
binval(53) := '00110101';
binval(54) := '00110110';
binval(55) := '00110111';
binval(56) := '00111000';
binval(57) := '00111001';
binval(58) := '00111010';
binval(59) := '00111011';
binval(60) := '00111100';
binval(61) := '00111101';
binval(62) := '00111110';
binval(63) := '00111111';
binval(64) := '00111111';
binval(65) := '01000001';
binval(66) := '01000010';
binval(67) := '01000011';
binval(68) := '01000100';
binval(69) := '01000101';
binval(70) := '01000110';
binval(71) := '01000111';
binval(72) := '01001000';
binval(73) := '01001001';
binval(74) := '01001010';
binval(75) := '01001011';
binval(76) := '01001100';
binval(77) := '01001101';
binval(78) := '01001110';
binval(79) := '01001111';
binval(80) := '01010000';
binval(81) := '01010001';
binval(82) := '01010010';
binval(83) := '01010011';
binval(84) := '01010100';
binval(85) := '01010101';
binval(86) := '01010110';
binval(87) := '01010111';
binval(88) := '01011000';
binval(89) := '01011001';
binval(90) := '01011010';
binval(91) := '01011011';
binval(92) := '01011100';
binval(93) := '01011101';
binval(94) := '01011110';
binval(95) := '01011111';
binval(96) := '01100000';
binval(97) := '01100001';
binval(98) := '01100010';
binval(99) := '01100011';
binval(100) := '01100100';
binval(101) := '01100101';
binval(102) := '01100110';
binval(103) := '01100111';
binval(104) := '01101000';
binval(105) := '01101001';
binval(106) := '01101010';
binval(107) := '01101011';
binval(108) := '01101100';
binval(109) := '01101101';
binval(110) := '01101110';
binval(111) := '01101111';
binval(112) := '01110000';
binval(113) := '01110001';
binval(114) := '01110010';
binval(115) := '01110011';
binval(116) := '01110100';
binval(117) := '01110101';
binval(118) := '01110110';
binval(119) := '01110111';
binval(120) := '01111000';
binval(121) := '01111001';
binval(122) := '01111010';
binval(123) := '01111011';
binval(124) := '01111100';
binval(125) := '01111101';
binval(126) := '01111110';
binval(127) := '01111111';
binval(128) := '01111111';
binval(129) := '10000001';
binval(130) := '10000010';
binval(131) := '10000011';
binval(132) := '10000100';
binval(133) := '10000101';
binval(134) := '10000110';
binval(135) := '10000111';
binval(136) := '10001000';
binval(137) := '10001001';
binval(138) := '10001010';
binval(139) := '10001011';
binval(140) := '10001100';
binval(141) := '10001101';
binval(142) := '10001110';
binval(143) := '10001111';
binval(144) := '10010000';
binval(145) := '10010001';
binval(146) := '10010010';
binval(147) := '10010011';
binval(148) := '10010100';
binval(149) := '10010101';
binval(150) := '10010110';
binval(151) := '10010111';
binval(152) := '10011000';
binval(153) := '10011001';
binval(154) := '10011010';
binval(155) := '10011011';
binval(156) := '10011100';
binval(157) := '10011101';
binval(158) := '10011110';
binval(159) := '10011111';
binval(160) := '10100000';
binval(161) := '10100001';
binval(162) := '10100010';
binval(163) := '10100011';
binval(164) := '10100100';
binval(165) := '10100101';
binval(166) := '10100110';
binval(167) := '10100111';
binval(168) := '10101000';
binval(169) := '10101001';
binval(170) := '10101010';
binval(171) := '10101011';
binval(172) := '10101100';
binval(173) := '10101101';
binval(174) := '10101110';
binval(175) := '10101111';
binval(176) := '10110000';
binval(177) := '10110001';
binval(178) := '10110010';
binval(179) := '10110011';
binval(180) := '10110100';
binval(181) := '10110101';
binval(182) := '10110110';
binval(183) := '10110111';
binval(184) := '10111000';
binval(185) := '10111001';
binval(186) := '10111010';
binval(187) := '10111011';
binval(188) := '10111100';
binval(189) := '10111101';
binval(190) := '10111110';
binval(191) := '10111111';
binval(192) := '11000000';
binval(193) := '11000001';
binval(194) := '11000010';
binval(195) := '11000011';
binval(196) := '11000100';
binval(197) := '11000101';
binval(198) := '11000110';
binval(199) := '11000111';
binval(200) := '11001000';
binval(201) := '11001001';
binval(202) := '11001010';
binval(203) := '11001011';
binval(204) := '11001100';
binval(205) := '11001101';
binval(206) := '11001110';
binval(207) := '11001111';
binval(208) := '11010000';
binval(209) := '11010001';
binval(210) := '11010010';
binval(211) := '11010011';
binval(212) := '11010100';
binval(213) := '11010101';
binval(214) := '11010110';
binval(215) := '11010111';
binval(216) := '11011000';
binval(217) := '11011001';
binval(218) := '11011010';
binval(219) := '11011011';
binval(220) := '11011100';
binval(221) := '11011101';
binval(222) := '11011110';
binval(223) := '11011111';
binval(224) := '11100000';
binval(225) := '11100001';
binval(226) := '11100010';
binval(227) := '11100011';
binval(228) := '11100100';
binval(229) := '11100101';
binval(230) := '11100110';
binval(231) := '11100111';
binval(232) := '11101000';
binval(233) := '11101001';
binval(234) := '11101010';
binval(235) := '11101011';
binval(236) := '11101100';
binval(237) := '11101101';
binval(238) := '11101110';
binval(239) := '11101111';
binval(240) := '11110000';
binval(241) := '11110001';
binval(242) := '11110010';
binval(243) := '11110011';
binval(244) := '11110100';
binval(245) := '11110101';
binval(246) := '11110110';
binval(247) := '11110111';
binval(248) := '11111000';
binval(249) := '11111001';
binval(250) := '11111010';
binval(251) := '11111011';
binval(252) := '11111100';
binval(253) := '11111101';
binval(254) := '11111110';
binval(255) := '11111111';
END IF;
return(binval(num));
END;

END;
/