Declarações de cursores podem ser separadas em duas partes: especificação e corpo. Ao declarar um cursor em uma especificação de pacote, a especificação do pacote deveria conter apenas a especificação do cursor e o corpo do cursor deve ser incluído no corpo do pacote.

Em versões mais novas do Oracle Forms, o uso de cursores declarados com corpo em especificação de pacote também causa o erro de compilação "internal error [Unexpected fragile external reference.]".

## Código em desconformidade

    create or replace package pkg is
      cursor cur is
        select dummy from dual;
    end;

## Código correto

    create or replace package pkg is
      type cur_type is record(dummy varchar2(1));
      cursor cur return cur_type;
    end;
    /
    create or replace package body pkg is
      cursor cur return cur_type is
        select dummy from dual;
    end;
    /