oracle产生十六进制数

来源:互联网 发布:数控编程培训学校 编辑:程序博客网 时间:2024/05/21 07:52
1、创建SEQ,产生十进制的序列号:
SQL code
?
1
2
3
4
5
6
7
8
CREATE SEQUENCE SEQ_HEX
MINVALUE 0
MAXVALUE 10000000
START WITH 0
INCREMENT BY 1
CACHE 20
CYCLE
ORDER;

2、写一个函数,返回0-9 A-F的结果:
SQL code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE OR REPLACE FUNCTION getHexSequence
RETURN VARCHAR2
AS
  N_SHANG NUMBER(10);
  N_YUSHU NUMBER(10);
  HEXRES   VARCHAR2(10);
BEGIN
  N_SHANG :=seq_hex.NEXTVAL;
  IF N_SHANG = 0 THEN
    RETURN '00000';
  END IF;
  WHILE N_SHANG>0  LOOP
    N_YUSHU:=N_SHANG MOD 16;
    SELECT CONCAT(DECODE(N_YUSHU,'10','A','11','B','12','C','13','D','14','E','15','F',N_YUSHU),HEXRES) INTO HEXRES FROM DUAL;
    N_SHANG := TRUNC(N_SHANG/16);
  END LOOP;
  RETURN LPAD(HEXRES,5,0);
END;

3、程序中的调用:
SQL code
?
1
SELECT  getHexSequence FROM dual;

4、产生的结果如下:
SQL code
?
1
2
3
4
5
6
7
SQL> SELECT  getHexSequence FROM dual;
 
GETHEXSEQUENCE
----------------------------------------
000AD
 
SQL>
原创粉丝点击