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;
/