-1

该过程现在在我插入异常后插入数据,但新问题是它在 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;
4

1 回答 1

1

如果您研究了错误消息,您会确定该错误与您的 dblink 无关。以下是相关信息:

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;
于 2013-07-21T00:57:19.737 回答