create or replace function IP_TEST(IP in varchar2) return NUMBER
is
Result NUMBER :=0;
KSIP varchar2(100);
JSIP varchar2(100);
type cursor_t is ref cursor;
emp_cur cursor_t;
begin
open emp_cur for 'select KSDZ,JSDZ from XXPT_IPXX_JCXX';
loop
fetch emp_cur into KSIP,JSIP; exit when emp_cur%notfound;
if IP_JUDGE(IP,KSIP,JSIP)=1 then
Result :=1;
end if;
end loop;
close emp_cur;
return Result;
end IP_TEST;
CREATE OR REPLACE FUNCTION BIT_TO_NUMBER(P_BIN IN VARCHAR2) RETURN NUMBER AS
V_SQL VARCHAR2(30000) := 'SELECT BIN_TO_NUM(';
V_RETURN NUMBER;
BEGIN
IF LENGTH(P_BIN) >= 256 THEN
RAISE_APPLICATION_ERROR(-20001, 'INPUT BIN TOO LONG!');
END IF;
IF LTRIM(P_BIN, '01') IS NOT NULL THEN
RAISE_APPLICATION_ERROR(-20002, 'INPUT STR IS NOT VALID BIN VALUE!');
END IF;
FOR I 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;
create or replace function f_dec_to_bin(v_num number) return varchar is
v_rtn varchar(2000);
v_n1 number;
v_n2 number;
begin
v_n1 := v_num;
loop
v_n2 := mod(v_n1, 2);
v_n1 := trunc(v_n1 / 2);
v_rtn := to_char(v_n2) || v_rtn;
exit when v_n1 = 0;
end loop;
case length(v_rtn)
when 1
判断ip是否在一个范围内 来自淘豆网m.daumloan.com转载请标明出处.