Oracle11g 输入为1.00的oracle无效数字异常
检查字符串是否为数字的特定函数在我传入1.00时引发异常: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
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=',';有关更改服务器配置的详细信息,请参阅。