Stammt nicht von mir, sondern von nem Kollegen, muss entsprechend umbauen, aber das Pronzip ist, dass man den ASCII Code prüft und schaut, ob es in der Coderange von Zahlen ist.
FUNCTION Check(
pi_str_ToCheck IN VARCHAR2
)
RETURN
boolean
IS
l_num_Char NUMBER;
l_num_Length NUMBER;
--
BEGIN
l_num_Length := LENGTH(pi_str_ToCheck);
IF l_num_Length > 0 THEN
--
FOR idx IN 1..l_num_Length LOOP
--
l_num_Char := ASCII(SUBSTR(pi_str_ToCheck,idx,1));
--
IF NOT (l_num_Char BETWEEN 48 AND 57) -- 0 ... 9
THEN
return FALSE
END IF;
END LOOP;
END IF;