En ytterligare idé som nämns här är att använda ett reguljärt uttryck för att kontrollera:
SELECT foo
FROM bar
WHERE REGEXP_LIKE (foo,'^[[:digit:]]+$');
Det fina är att du inte behöver en separat PL/SQL-funktion. Den potentiellt problematiska delen är att ett reguljärt uttryck kanske inte är den mest effektiva metoden för ett stort antal rader.