Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle11g 输入为1.00的oracle无效数字异常_Oracle11g - Fatal编程技术网

Oracle11g 输入为1.00的oracle无效数字异常

Oracle11g 输入为1.00的oracle无效数字异常,oracle11g,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

检查字符串是否为数字的特定函数在我传入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是一个完全有效的数字。对吗?

最多使用三个参数,第一个是要转换的表达式,第二个是要使用的数字格式,第三个定义十进制和组分隔符。只需要第一个。如果没有第三个nlsparam元素,Oracle将为您的会话使用默认值。您的区域设置的默认小数分隔符似乎是“,”


请尝试
到数字(p_num,'9G999D99','NLS_数字字符='','')

尝试“1,00”(用逗号代替句号)。它可能是一个i18n,l10n的问题。嗯……最终1.00的值将被动态传递。但我会试试你的建议,你是对的。1,00件作品。但是1,00和1.00不一样。那么我怎样才能保持1.00的价值呢?太好了。您应该检查并阅读这个Oracle语句:ALTER SESSION SET NLS_NUMERIC_CHARACTERS=',';有关更改服务器配置的详细信息,请参阅。