CREATE OR REPLACE FUNCTION number_to_bit (v_num Number) RETURN VARCHAR is V_rtnVARCHAR(8);--Note return column lengthV_n1 Number; V_n2 Number;BEGINv_n1:=V_num; LOOP v_n2:=MOD (V_N1,2); V_N1:= ABS(TRUNC (v_n1/ 2)); V_RTN:=To_char (V_N2)||V_rtn; EXITWhenv_n1= 0; END LOOP;--return binary lengthSELECT Lpad (V_rtn,8,0) intoV_rtn from Dual;return V_rtn;
END;
CREATE OR replacefunction bit_to_number (p_bin INVARCHAR2) returnnumber asV_sqlVARCHAR2(30000) := 'SELECT Bin_to_num ('; V_return Number;BEGIN IFLENGTH (P_bin)>= the ThenRaise_application_error (-20001,'INPUT BIN TOO long!'); ENDIF; IF LTRIM(P_bin,' on') is not NULL and then raise_application_error (-20002,'INPUT STR is not VALID BIN value!'); END IF; Fori in 1.. LENGTH (P_bin) LOOP v_sql:=V_sql||SUBSTR (P_bin, I,1)|| ','; END LOOP; V_sql:= RTRIM(V_sql,',')|| ') from DUAL'; EXECUTE IMMEDIATE v_sql into V_return; RETURN V_return;END;
Oracle Binary-10 binary and 2 binary mutual transfer