我写好了,呵呵
CREATE OR REPLACE FUNCTION substr_validate_data(con_str VARCHAR2,
con_num VARCHAR2
)
RETURN NUMBER IS
n NUMBER := 1;
v_each_data VARCHAR (100) := NULL;
v_return_str VARCHAR2 (4000) := NULL;
BEGIN
LOOP
select SUBSTR(con_str,n,1) into v_each_data from dual;
EXIT WHEN (v_each_data not in ('0','.') or n > length(con_str));
n:= n + 1;
END LOOP;
select n+con_num-1 into n from dual;
select substr(con_str,1,n) into v_return_str from dual;
RETURN v_return_str;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END substr_validate_data;
/