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_字符设置为您需要的任何字符。如果这是因为本地化/区域定义,则情况会更糟。