0

これが私のスクリプトplです。実際、「行検索」行の EOF 条件は守られていません。その結果、主キーで違反が発生しています。

誰でも助けることができますか?ありがとうございました。

IF TRIM(v_descricao_uo_municipio) = 'Belo Horizonte - Registro de Imóveis' THEN -- id = 2430

  /* Abre o cursor das UO's para inserção */
  OPEN cr_cartorio_uo(v_id_uo_municipio);    
  loop
    Line to fetch: FETCH cr_cartorio_uo INTO v_id_uo, v_descricao_uo; -- Problem is here

    /* Faz carga em "grupodeenviouo" */
    INSERT INTO grupodeenviouo (grupodeenvio_id, uo_id) 
       VALUES (v_returning_grupo_id, v_id_uo);

    EXIT WHEN cr_cartorio_uo%NOTFOUND;
  END LOOP cr_cartorio_uo;

END IF;
4

1 に答える 1

2

主キー違反は、カーソルの最後の行が 2 回フェッチされているために発生しています。そして、これが起こっている理由は、ステートメントの配置が間違っているためです 。ステートメントEXIT WHEN cr_cartorio_uo%NOTFOUNDの直後に配置する必要があります。FETCH cr_cartorio_uo INTO

if trin(v_descricao_uo_municipio) = 'Belo Horizonte - Registro de Imóveis' 
then 
 /* Abre o cursor das UO's para inserção */
  open cr_cartorio_uo(v_id_uo_municipio);    
  loop
    fetch cr_cartorio_uo 
     into v_id_uo, v_descricao_uo; -- Problem is here

    exit when cr_cartorio_uo%notfound;

    /* Faz carga em "grupodeenviouo" */
    insert into grupodeenviouo (grupodeenvio_id, uo_id) 
      values (v_returning_grupo_id, v_id_uo);
  end loop cr_cartorio_uo;
end if;
于 2013-09-12T18:21:34.567 に答える