我的程序如下所示:
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 Database 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 - 生产