to_number non è abbastanza, necessitiamo infatti di una funzione creata apposta per gestire l’eccezione di errore che genererebbe nel caso incontrasse un carattere al posto di un numero Questa è la funzione: create function is_numeric(str in varchar2) return number is v_number number(38); begin v_number := to_number(str); return v_number; exception when value_error then return 0; end is_numeric; Questa funzione restituisce il valore numerico ove esistente, altrimenti restituisce 0.]]>
Nessun commento “Function is_numeric() in Oracle”
La funzione proposta is_numeric è ambigua, nell’intento di voler restituire il valore di trasformazione della funzione to_number ed il relativo esito di errore. Infatti, 0 è contemporaneamente il risultato della trasformazione di to_number ed il return di errore.
Una più corretta formulazione può essere come segue, limitando il risultato alla codizione normale (è numerico) 0, e quella di errore 1.
create function is_numeric(str in varchar2) return number is
v_number number(38);
begin
v_number := to_number(str);
return 0;
exception when value_error then
return 1;
end is_numeric;