Oracle 在过程中使用dblink插入无效
在我插入了一个异常之后,这个过程现在正在插入数据,但新的问题是它在emp1表中插入了两次相同的行Oracle 在过程中使用dblink插入无效,oracle,Oracle,在我插入了一个异常之后,这个过程现在正在插入数据,但新的问题是它在emp1表中插入了两次相同的行 CREATE OR REPLACE PROCEDURE proc1 IS CURSOR b IS SELECT environment FROM emp; v VARCHAR2(11); BEGIN OPEN c; LOOP FETCH b INTO v; CASE v WHEN
CREATE OR REPLACE PROCEDURE proc1 IS
CURSOR b IS SELECT environment FROM emp;
v VARCHAR2(11);
BEGIN
OPEN c;
LOOP
FETCH b INTO v;
CASE v
WHEN 'a' THEN INSERT INTO emp1@testlink SELECT empno, name FROM emp
WHEN 'b' THEN INSERT INTO emp1@testlink1 SELECT empno, name FROM emp
END CASE;
END LOOP;
EXCEPTION
WHEN case_not_found THEN dbms_output.put_line('No data');
CLOSE b;
如果您研究了错误消息,就会确定错误与dblinks无关。有关资料如下:
ORA-06592:
CASE not found while executing CASE statement
Cause: A CASE statement must either list all possible cases or have an else clause.
Action: Add all missing cases or an else clause
因此,“环境”的值既不是“a”也不是“b”。如果具有其他值是有效的,那么您需要为它们添加案例,或者添加ELSE子句以通过一些默认操作捕获这些值
case v
when 'a' then insert into emp1@testlink select empno, name from emp
when 'b' then insert into emp1@testlink1 select empno, name from emp
else <<do something here>>
end loop;
案例五
当“a”时,则插入emp1@testlink从emp中选择empno、名称
当“b”时,则插入到emp1@testlink1从emp中选择empno、名称
其他的
端环;
如果执行此过程,是否会显示错误?是否尝试在过程之外运行insert命令?您是否已检查表emp1是否具有插入权限?是否有错误?是的,它显示了一个错误ORA-06592:在执行CASE语句时未找到CASE编辑了post,现在它将同一行插入了两次。任何帮助都是无效的appreciated@user1815823:如果此过程将同一行插入两次,则查询:SELECT environment FROM emp将返回同一行。谢谢,我之前已这样做并编辑了此帖子。现在,它正在两次插入同一行,然后在EMP中有多行具有相同的环境值。您是否打印出游标的值以查看结果,或者只是将游标选择作为查询运行?由于我正在测试,我只有用于环境的行,但仍然在目标表中插入了两次您缺少循环的退出条件:当b%未找到时退出;顺便说一句,通过使用游标for循环,您可以取消所有游标打开/获取/关闭业务-