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.]".
create or replace package pkg is cursor cur is select dummy from dual; end;
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; /