oracle8.1.6 select q2.* from (select rownum as inner_rownum, q.* from (select lm1.message_key, lm1.package_key, lm1.message as default_message, lm2.message as translated_message, lmk.description from lang_messages lm1, lang_messages lm2, lang_message_keys lmk where lm1.locale = :default_locale and lm2.locale (+) = :locale and lm2.message_key (+) = lm1.message_key and lm2.package_key (+) = lm1.package_key and lm1.message_key = lmk.message_key and lm1.package_key = lmk.package_key and lm1.package_key = :package_key $where_clause order by upper(lm1.message_key), lm1.message_key ) q ) q2 where inner_rownum between :page_start + 1 and :page_start + 10 order by inner_rownum