调用内部程序时出现ORA 06502错误,但使用测试窗口执行时效果很好

时间:2015-05-31 14:02:06

标签: oracle stored-procedures dblink

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

  

ORA-06502:PL / SQL:数字或值错误:字符串缓冲区太小

但是,当我尝试使用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;

端;

2 个答案:

答案 0 :(得分:0)

评论太长了。

错误可能在这里:

module V1  
  class ApiController < ApplicationController
    skip_before_filter :verify_authenticity_token
    protect_from_forgery with: :null_session
    before_filter :cors_preflight_check
    after_filter :cors_set_access_control_headers

    def cors_set_access_control_headers
      headers['Access-Control-Allow-Origin'] = '*'
      headers['Access-Control-Allow-Methods'] = '*'
      headers['Access-Control-Request-Method'] = '*'
      headers['Access-Control-Allow-Headers'] = '*'
      headers['Access-Control-Max-Age'] = "1728000"
    end

    def cors_preflight_check
      if request.method == "OPTIONS"
        headers['Access-Control-Allow-Origin'] = '*'
        headers['Access-Control-Allow-Methods'] = '*'
        headers['Access-Control-Request-Method'] = '*'
        headers['Access-Control-Allow-Headers'] = '*'
        headers['Access-Control-Max-Age'] = '1728000'
        render :text => '', :content_type => 'text/plain'
      end
    end
  end
end

select col2, col3 into v_var2, v_var3 from table1 where col1 = var1; col2可能超过100/200个字符。

你可能会去:

col3

答案 1 :(得分:0)

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

感谢所有人的帮助和时间。