【发布时间】:2012-09-18 07:42:46
【问题描述】:
我的程序如下所示:
Declare
cur_1 Sys_Refcursor;
cur_2 Sys_Refcursor;
v_1 VARCHAR2(30);
v_2 VARCHAR2(30);
v_3 VARCHAR2(30);
v_4 VARCHAR2(30);
Begin
OPEN cur_1 for Select * from tab1@dblink1;
Loop
Fetch cur_1 into v_1, v_2;
EXIT WHEN cur_1%NOTFOUND;
OPEN cur_2 for Select * from tab2@dblink1 where col1 = v_1 and col2 = v2;
Loop
Fetch cur2 into v_3, v_4;
Exit when cur_2%notfound;
INSERT INTO local.tab3 values (v_1,v_2, v_3, v_4);
END Loop;
close cur_2;
End Loop;
close cur_1;
END;
abobe 程序可以编译,但是当我运行它时出现以下错误:
没有更多数据可以从套接字读取
没有更多数据可从套接字读取
没有更多数据可从套接字读取
没有更多数据可从套接字读取
没有更多数据可从套接字读取
没有更多数据可从套接字读取
没有更多数据可从套接字读取
没有更多数据可从套接字读取
...(很少有'没有更多数据可以从套接字读取')IO 错误:对等方重置连接:套接字写入错误
进程已退出。
有趣的是,当我注释掉整个内部循环时,程序运行时不会出错。所以我知道内部循环有问题(我尝试只注释内部循环中的插入语句并得到相同的错误)。
我的 localdb 和 dblink1 数据库版本相同:
Oracle 数据库 11g 企业版 11.2.0.1.0 - 64 位生产
PL/SQL 版本 11.2.0.1.0 - 生产
核心 11.2.0.1.0 生产
适用于 64 位 Windows 的 TNS:版本 11.2.0.1.0 - 生产
NLSRTL 版本 11.2.0.1.0 - 生产
【问题讨论】:
-
Tab2是否存在于您使用@dblink1连接的数据库中? -
是的......当我通过 sqlplus 运行查询时,它返回一个结果集
-
@tbone:在循环中的 INSERT INTO local.tab3 值(v_1、v_2、v_3、v_4)之后添加了提交。不工作:(