22.01.2013

Мелкий траблшутинг: задвоение в SYS_REFCURSOR

Бывает, звезды сложатся так, что последняя запись задваивается.
Верный способ получить задвоение..
 cur := get_refcursor(dsql_statmnt);
    loop
      exit when cur%NOTFOUND;
      fetch cur
        into group_row;
        pipe row(group_row);
    end loop;
    close cur;
..и как его избежать:
 cur := get_refcursor(dsql_statmnt);
    loop
      fetch cur
        into group_row;
      exit when cur%NOTFOUND;
        pipe row(group_row);
    end loop;
Строки 2 и 3 поменяны местами. Правильно сначала получать следующий элемент, а потом проверять его на существование.

Комментариев нет :