在存储过程中使用 INSTR 函数。INSTR(a,b) 其中 a 非常巨大。在查找 b 在 中出现的同时,它会导致一个大于整数的大值。所以我收到以下错误,
"ORA-06502:PL/SQL:数字或值错误"。
有人可以帮助我解决这个问题,或者如果我可以在 oracle 中使用其他一些类似的功能,请写在这里。
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_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
时为 NULL。