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
      ...