当我传入1.00:
时,检查字符串是否为数字的特定函数抛出异常create or replace function my_to_number( p_num in
varchar2 ) return number
as
x number;
num_val_error exception;
pragma exception_init( num_val_error, -6502 );
begin
x := to_number( p_num );
return 1;
exception
when num_val_error then
return 0;
end my_to_number;
1.00是完全有效的数字。正确?
答案 0 :(得分:1)
TO_NUMBER
最多需要三个参数,第一个是要转换的表达式,第二个是要使用的数字格式,第三个是小数和组分隔符的定义。只需要第一个。如果没有第三个 nlsparam 元素,Oracle会使用会话的默认值。看起来您的语言环境的默认小数点分隔符是','。
尝试TO_NUMBER(p_num, '9G999D99', 'NLS_NUMERIC_CHARACTERS = ''.,''')