Это хорошая причина, чтобы либо использовать как можно больше только стандартного SQL, либо изолировать эти зависимости в хранимых процедурах (да, я знаю, что в данном конкретном случае это вам не поможет, я просто подумал упомянуть это для дальнейшего использования).
Я подозреваю, что вам придется менять каждый из них по отдельности, хотя простой поиск по исходному коду для "select" или "first" будет хорошим началом.
Затем вы можете решить , как вы хотите изменить их, поскольку вы также можете захотеть, чтобы он работал на Informix.
Что бы это ни стоило, я думаю, вы получите тот же эффект с
от Oracle
select * from ( select * from mytable ) where rownum <= 10
Мне бы хотелось выполнить динамическое построение запроса (на основе шаблона) на другом уровне, который может возвращать другой запрос на основе настроенной вами базы данных. Затем, когда вы также хотите поддержать DB2 (например), достаточно просто изменить только этот слой.
Например, позвонить как:
gimmeRowLimitedSqlQuery ("* from test",10);
, который даст вам одно из:
select first 10 * from test
select * from test where rownum <= 10
Я должен также упомянуть, хотя я понимаю, что ваш запрос является лишь примером, что SQL может возвращать строки в любом порядке, если вы не укажете order by
, поэтому
select first 10 * from test
не имеет особого смысла, особенно , если вы можете запускать его в разных СУБД.