oracle进制--8进制与10进制互转
/*
函数:f_8_tr_10,8进制转换为10进制
作者:li0924
时间:2013_07_19
8进制是0开头的;
*/
create or replace function f_8_tr_10(v_8_data in number)
return number
is
v_data number(18);
v_char varchar2(18);
begin
v_char:=substr(to_char(v_8_data),1);
select sum(data) into v_data from
(
select
to_number(substr(upper(v_char),rownum,1))*power(8,length(v_char)-rownum) data
from dual
connect by rownum<=length(v_char)
);
return v_data;
exception
when others then
return null;
end;
函数:f_8_tr_10,8进制转换为10进制
作者:li0924
时间:2013_07_19
8进制是0开头的;
*/
create or replace function f_8_tr_10(v_8_data in number)
return number
is
v_data number(18);
v_char varchar2(18);
begin
v_char:=substr(to_char(v_8_data),1);
select sum(data) into v_data from
(
select
to_number(substr(upper(v_char),rownum,1))*power(8,length(v_char)-rownum) data
from dual
connect by rownum<=length(v_char)
);
return v_data;
exception
when others then
return null;
end;
CREATE OR REPLACE FUNCTION N10_TO_8(V_NUM NUMBER) RETURN VARCHAR IS RESULT VARCHAR(8); NUM NUMBER; TMP NUMBER; TEMP NUMBER; BEGIN NUM := V_NUM; TMP := TRUNC(NUM / 8); WHILE NUM > 0 LOOP TEMP := MOD(NUM, 8); RESULT := TEMP || RESULT; NUM := TMP; TMP := TRUNC(NUM / 8); END LOOP; return RESULT; end;

浙公网安备 33010602011771号