Oracle 在过程中使用dblink插入无效

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

在我插入了一个异常之后,这个过程现在正在插入数据,但新的问题是它在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 '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循环,您可以取消所有游标打开/获取/关闭业务-