0

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

4

1 回答 1

1

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

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

于 2012-08-22T01:46:05.543 回答