中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
Oracle中十进制与十六进制转换程序
作者:佚名 时间:2004-07-11 10:40 出处:互连网 责编:chinaitpower
              摘要:Oracle中十进制与十六进制转换程序

  CREATE OR REPLACE PROCEDURE dec2hex (in_num IN NUMBER, out_hex OUT VARCHAR2)
  IS
    TYPE vc2tab_type IS TABLE OF VARCHAR2(1)
     INDEX BY BINARY_INTEGER;
  
    hextab            vc2tab_type;
    v_num             NUMBER;
    v_hex             VARCHAR2(200);
  
  /*
  Author: Jonas Nordstrom
  */
  BEGIN
    IF in_num IS NULL THEN RETURN NULL; END IF; 
  
    hextab (0) := '0';
    hextab (1) := '1';
    hextab (2) := '2';
    hextab (3) := '3';
    hextab (4) := '4';
    hextab (5) := '5';
    hextab (6) := '6';
    hextab (7) := '7';
    hextab (8) := '8';
    hextab (9) := '9';
    hextab (10) := 'A';
    hextab (11) := 'B';
    hextab (12) := 'C';
    hextab (13) := 'D';
    hextab (14) := 'E';
    hextab (15) := 'F';
    v_num := in_num;
  
    WHILE v_num >= 16
    LOOP
     v_hex := hextab (MOD (v_num, 16)) || v_hex;
     v_num := TRUNC (v_num / 16);
    END LOOP;
  
    v_hex := hextab (MOD (v_num, 16)) || v_hex;
    out_hex := v_hex;
  END;  -- dec2hex
  /
  
  CREATE OR REPLACE FUNCTION hextointeger (h VARCHAR2)
    RETURN PLS_INTEGER
  IS
  BEGIN
    IF NVL (LENGTH (h), 1) = 1
    THEN
     RETURN INSTR ('0123456789ABCDEF', h) - 1;
    ELSE
     RETURN 16 * hextointeger (SUBSTR (h, 1, LENGTH (h) - 1)) +
         INSTR ('0123456789ABCDEF', SUBSTR (h, -1)) -
         1;
    END IF;
  END hextointeger;
  /
  
  CREATE OR REPLACE FUNCTION integertohex (n pls_integer)
    RETURN VARCHAR2
  IS
  BEGIN
    IF n > 0
    THEN
     RETURN integertohex (TRUNC (n / 16)) ||
         SUBSTR ('0123456789ABCDEF', MOD (n, 16) + 1, 1);
    ELSE
     RETURN NULL;
    END IF;
  END integertohex;
  /
  
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有