Em uma expressão SELECT, a cláusula WHERE é executada antes da cláusula ORDER BY. Considere esse exemplo:

DECLARE
  CURSOR usuarios_recentes IS
    SELECT usuario.nome,
           usuario.data_de_criacao
      FROM usuario
     WHERE ROWNUM <= 5
     ORDER BY usuario.data_de_criacao DESC;
BEGIN
  ...

Essa consulta não retornará os últimos 5 usuários criados. O banco de dados filtrará os usuários sem nenhuma ordenação e só então aplicará a cláusula ORDER BY. A consulta corrigida é:

DECLARE
  CURSOR usuarios_recentes IS
    SELECT nome,
           data_de_criacao
      FROM (SELECT usuario.nome,
                   usuario.data_de_criacao
              FROM usuario
             ORDER BY user.data_de_criacao DESC)
     WHERE ROWNUM <= 5;
BEGIN
  ...