通过DBlink调用存储过程的奇怪有关问题

通过DBlink调用存储过程的奇怪问题
小弟在编写存储过程的时候碰到一个奇怪的问题,在本地数据库A通过dblink调用远程数据库B上的存储过程C时,发现返回结果是存储过程C异常的结果‘O’,而如果直接登陆到远程数据库B上执行存储过程C,则返回正确的结果‘Y’,想请教一下,这种现象是由什么引起的?

本地数据库A上的存储过程如下:
CREATE OR REPLACE PROCEDURE GETONECJNUMTEST(flag out varchar2)
AS
LS_MONTH varchar2(100);
LS_MONTH1 varchar2(100);
LS_MONTH2 varchar2(100);
LS_MONTH3 varchar2(100);
LS_MONTH4 varchar2(100);
tel_no varchar2(100);

BEGIN
  TEL_NO:= '85818071';

  GETPAYCASH2_731@to_jzjf(TEL_NO,LS_MONTH1,LS_MONTH2,LS_MONTH3,LS_MONTH4);

  flag:=LS_MONTH4;

EXCEPTION WHEN OTHERS THEN
  FLAG := 'N'||SQLERRM;
  ROLLBACK;
END;

存储过程C如下:
create or replace procedure acct.GetPayCash2_731(
  in_telno in varchar2,
  total_value out varchar2,
  punish_value out varchar2,
  balance_value out varchar2,
  out_flag out varchar2) is

.......

begin
.......
EXCEPTION WHEN OTHERS THEN
  sqlerr:=substr(sqlerrm,1,100);
  dbms_output.put_line(sqlerr);
  total_value:=0;
  punish_value:=0;
  balance_value:=0;
  out_flag :='O';
end GetPayCash2_731;

已经查了一天了,还没查出所以然来,先谢谢各位大大了!


------解决方案--------------------
检查权限