在Oracle中不支持LIMT ? OFFSET ?這樣的SQL語(yǔ)法,所以原先的MySQL的語(yǔ)句移植到Oracle中需要做一些改動(dòng),我的做法如下:
MySQL:SELECT * FROM foo ORDER BY xxx LIMIT ? OFFSET ?
Oracle:SELECT * FROM (SELECT ROWNUM AS NUMROW, A.* FROM (SELECT * FROM foo ORDER BY xxx) A) WHERE NUMROW>? AND NUMROW<=?
這是利用Oracle的一個(gè)虛擬的ROWNUM列實(shí)現(xiàn)的,只要在原來(lái)的SQL語(yǔ)句前面加上“SELECT * FROM (SELECT ROWNUM AS NUMROW, A.* FROM (”,并且把后面的“LIMIT ? OFFSET ?”改成“) A) WHERE NUMROW>? AND NUMROW<=?”,并且在代碼處做相關(guān)的修改即可。