ORA-06502:PL/SQL:数字或值错误-指令函数Oracle
在存储过程中使用INSTR函数。 仪器(a,b),其中a非常大。 当在a中查找b的出现时,它会产生一个比整数更大的值。所以我得到了下面的错误 “ORA-06502:PL/SQL:数字或值错误” 有人能帮我解决这个问题吗?或者如果我能在oracle中使用其他类似的功能,请写在这里ORA-06502:PL/SQL:数字或值错误-指令函数Oracle,oracle,stored-procedures,Oracle,Stored Procedures,在存储过程中使用INSTR函数。 仪器(a,b),其中a非常大。 当在a中查找b的出现时,它会产生一个比整数更大的值。所以我得到了下面的错误 “ORA-06502:PL/SQL:数字或值错误” 有人能帮我解决这个问题吗?或者如果我能在oracle中使用其他类似的功能,请写在这里 create or replace PROCEDURE "sample" ( dest_schema IN VARCHAR2 ) AS digit NUMBER(20); parentList CLOB; product
create or replace PROCEDURE "sample" ( dest_schema IN VARCHAR2 )
AS
digit NUMBER(20);
parentList CLOB;
product NUMBER(38);
digit := INSTR(parentList,product); --> issue comes here
END;
您需要使用
DBMS\u LOB.INSTR
来搜索clob。有关文档,请参阅
DBMS_LOB.INSTR (
lob_loc IN CLOB CHARACTER SET ANY_CS,
pattern IN VARCHAR2 CHARACTER SET lob_loc%CHARSET,
offset IN INTEGER := 1,
nth IN INTEGER := 1)
在您发布的代码中,
product
未分配值,因此在调用INSTR
时为空。显示完整的代码您是如何确定错误是由值太大引起的?返回的值是NUMBER
datatype,那么这与“integer”有什么关系呢?NUMBER
的最大值约为10^38-我怀疑您的字符串是否有那么长。您进行了编辑以添加代码,但是否确实发布了正确的代码?我相信这甚至不会编译您缺少的BEGIN
。这确实是完整的代码吗?是的,我的父列表是长字符串。但我不确定错误是因为返回值还是其他原因。除了返回值之外,我看不出出现此错误的任何原因