输入的oracle无效数异常= 1.00

时间:2012-08-21 23:19:50

标签: oracle11g

当我传入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是完全有效的数字。正确?

1 个答案:

答案 0 :(得分:1)

TO_NUMBER最多需要三个参数,第一个是要转换的表达式,第二个是要使用的数字格式,第三个是小数和组分隔符的定义。只需要第一个。如果没有第三个 nlsparam 元素,Oracle会使用会话的默认值。看起来您的语言环境的默认小数点分隔符是','。

尝试TO_NUMBER(p_num, '9G999D99', 'NLS_NUMERIC_CHARACTERS = ''.,''')