在过程内部调用时出现 ORA 06502 错误,但在使用测试 window 执行时运行良好

ORA 06502 error when called inside procedure but when executed using test window it works well

我正在使用 dblink 从过程 schmea2.proc2 调用过程 schema1.proc1。 对于某些情况,schema1.proc1 returns 错误

ORA-06502: PL/SQL: numeric or value error: character string buffer too small

然而,当我尝试使用 pl/sql 使用相同的输入参数执行它时,它工作正常。

请帮我解决错误。

代码:

var1 VARCHAR2(10),
var2 VARCHAR2(25),
var3 VARCHAR2(75),
var4 VARCHAR2(200)

begin
 pkg1.getdetails@dbLINK1(var1, var2, var3,var4);
end

create or replace package body pkg1 as
 procedure getdetails (var1 in varchar2, var2 out varchar2, var3 out varchar2, var4 out varchar2) as
  v_var2 varchar2(100);
  v_var3 varchar2(200);

 begin
  select col2,col3  into v_var2, v_var3
  from table1 where col1 = var1;

  var2 := substr(v_var2,1,25);
  var3 := substr(v_var3,1,75);

exception when others then
 var4 := substr(sqlerrm,1,200);
end;

结束;

评论太长了。

有可能是这里的错误:

select col2, col3 into v_var2, v_var3
from table1
where col1 = var1;

也许 col2col3 可以超过 100/200 个字符。

你可能会选择:

select substr(col2, 1, 25), substr(col3, 1, 75) into var2, var3
from table1
where col1 = var1;

显然在部署中存在问题,其中一个架构中的更改已实现而另一个未实现,这导致了问题。

感谢大家的帮助和时间。