免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2317 | 回复: 3
打印 上一主题 下一主题

oracle10g存储过程错误 [Oracle 开发] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-29 21:07 |只看该作者 |倒序浏览
存储过程如下:
create or replace procedure proc_stat_alldata(protype varchar2 default null) as
  v_pro dbms_sql.varchar2_table;
  v_source dbms_sql.varchar2_table;
  v_btab dbms_sql.varchar2_table;
  v_etab dbms_sql.varchar2_table;
  v_wsql dbms_sql.varchar2_table;
  v_dblink dbms_sql.varchar2_table;
  v_tablist dbms_sql.varchar2_table;
  v_cnt int;
  v_total int;
  sqlstr long;
  tmpsql long;

begin
  v_total:=0;
  v_cnt:=0;
  if protype is null then
  tmpsql := ' where flag =1 ';
  else
  tmpsql := ' where flag =1 and protypedesc =''' || protype || '''';
  end if;
  sqlstr := ' select protypedesc,datasource,btable,etable,wherestr,dblink from base_staticonftable@tasklink ' ||
  tmpsql;
  execute immediate sqlstr BULK COLLECT
  INTO v_pro, v_source, v_btab, v_etab, v_wsql, v_dblink;

  for i in 1 .. v_pro.COUNT loop
  sqlstr := 'select table_name from user_tables@' || v_dblink(i) ||
  ' where table_name >=''' || v_btab(i) ||
  ''' and table_name <=''' || v_etab(i) ||
  ''' and table_name not like ''%_BAK''';
  execute immediate sqlstr BULK COLLECT
  INTO v_tablist;
  delete from ProCountTABLE@tasklink
  where proTypeDesc = v_pro(i)
  and datasource = v_source(i)
  and datadate = to_number(to_char(sysdate - 1, 'yyyymmdd'));
  if v_tablist.COUNT >= 1 then
  for j in 1 .. v_tablist.COUNT loop
  sqlstr := 'select count(*) from ' || v_tablist(j) || '@' ||
  v_dblink(i) || ' ' || v_wsql(i);
  dbms_output.put_line(sqlstr);
  execute immediate sqlstr
  into v_cnt;
  v_total := v_total + v_cnt;
  end loop;
  insert into ProCountTABLE@tasklink
  (proTypeDesc, Datasource, dataDate, totalCnt, insertDate)
  values
  (v_pro(i),
  v_source(i),
  to_number(to_char(sysdate - 1, 'yyyymmdd')),
  v_total,
  sysdate);
  end if;
  commit;
  end loop;
end proc_stat_alldata;


报错内容如下:

PROCEDURE FENGHUO.PROC_STAT_ALLDATA 编译错误

错误:ORA-04052: error occurred when looking up remote object FENGHUO.PROCOUNTTABLE@TASKLINK
  ORA-00604: error occurred at recursive SQL level 1
  ORA-12560: TNS:protocol adapter error
行:1
文本:create or replace procedure proc_stat_alldata(protype varchar2 default null) as

请问这是怎么回事啊?????

论坛徽章:
0
2 [报告]
发表于 2011-05-29 23:44 |只看该作者
本帖最后由 tanyangxf 于 2011-05-29 23:45 编辑

回复 1# greenandtree


select protypedesc,datasource,btable,etable,wherestr,dblink from base_staticonftable@tasklink 看看这句话能不能执行?dblink有问题

论坛徽章:
3
CU大牛徽章
日期:2013-09-18 15:16:55CU大牛徽章
日期:2013-09-18 15:18:22CU大牛徽章
日期:2013-09-18 15:18:43
3 [报告]
发表于 2011-05-30 09:24 |只看该作者
你的存储过程涉及到一个远程对象

首先要保证这个dblink是可用的,其次保证对象存储及权限正常!

手工执行这个语句,看看是什么结果?

select protypedesc,datasource,btable,etable,wherestr,dblink
from base_staticonftable@tasklink

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
4 [报告]
发表于 2011-05-30 10:16 |只看该作者
dblink所在主机监听,或者服务没有启动。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP