Една допълнителна идея, спомената тук, е да използвате регулярен израз за проверка:
SELECT foo
FROM bar
WHERE REGEXP_LIKE (foo,'^[[:digit:]]+$');
Хубавата част е, че не се нуждаете от отделна PL/SQL функция. Потенциално проблемната част е, че регулярният израз може да не е най-ефективният метод за голям брой редове.