No creo.
Pero prueba algo así
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION isnumber(cadena IN VARCHAR2)
RETURN VARCHAR2 AS
numero_prueba NUMERIC;
BEGIN
BEGIN
numero_prueba := TO_NUMBER(cadena);
RETURN ('ES NUMERO');
EXCEPTION
WHEN OTHERS THEN
RETURN ('NO ES NUMERO');
END;
END isnumber;
/
Se usan dos niveles de transacciones. Si la conversión a numero con TO_NUMBER es exitosa, es porque el valor ingresado en el parámetro es numérico y retornas un mensaje para numero. si se presenta error en esta conversión tratas la excepción y no aplicas raise para que el error no corrompa el bloque padre. Si se da ese caso, retorna un mensaje para alfanumerico.
pruebala y nos cuentas.