IF语句-ORA-06502:PL/SQL:erro:character-to-number转换错误中存在Oracle-TYPE-TABLE-Collection方法

IF语句-ORA-06502:PL/SQL:erro:character-to-number转换错误中存在Oracle-TYPE-TABLE-Collection方法,oracle,plsql,oracle11g,oracle11gr2,generic-collections,Oracle,Plsql,Oracle11g,Oracle11gr2,Generic Collections,我需要收集一个包裹,但我不知道哪里出错了 这是我的声明和初始化: avversao varchar2(30); TYPE tListaVersaoHomologada IS TABLE OF NVARCHAR2(30); vVersaoHomologada tListaVersaoHomologada := tListaVersaoHomologada('0.06', '0.07'); 这就是引发异常的地方 if NOT(vVersaoHomologada.EXISTS(avversao))

我需要收集一个包裹,但我不知道哪里出错了

这是我的声明和初始化:

avversao varchar2(30);
TYPE tListaVersaoHomologada IS TABLE OF NVARCHAR2(30);
vVersaoHomologada tListaVersaoHomologada := tListaVersaoHomologada('0.06', '0.07');
这就是引发异常的地方

if NOT(vVersaoHomologada.EXISTS(avversao)) then
        ...
end if;
变量

avversao
具有以下值之一:

  • 0.06
  • 0.07
参考:


成员
-检查集合中是否存在值。
存在
-用于检查集合在索引中是否有值

declare 
avversao varchar2(30) := '0.06';
TYPE tListaVersaoHomologada IS TABLE OF VARCHAR2(30);
vVersaoHomologada tListaVersaoHomologada := tListaVersaoHomologada('0.06', '0.07');
begin

 if avversao member of vVersaoHomologada then 
  dbms_output.put_line('!!!!Exist!!!!!');
 end if; 

end;

为什么要使用
NVARCHAR2
来表示数值?@WernfriedDomscheit不是我的代码,但我想是因为本地化/区域定义。。。该代码是在十进制分隔符是逗号而不是点的国家编写的。Oracle总是把小数分隔符看作逗号吗?小数分隔符是由NLS设置管理的。默认设置为美式,但很容易将NLS_NUMERIC_字符设置为您需要的任何字符。如果这是因为本地化/区域定义,则情况会更糟。