我們正在使用Java EE應用程序,我們現在正在使用Informix DB.我們的代碼點擊數據庫,查詢如 「select first 10 * from test」 現在據我所知,Oracle不支持'前10 *'種語句。我們有超過1000個像這樣的查詢。我們是否應該手動更改這個或者可以進行一些手動定製?遷移到Oracle
3
A
回答
2
這是或者只使用標準的SQL儘可能一個很好的理由,或用於隔離那些依賴關係到存儲過程(是的,我知道這並不能幫助你在這種特殊情況下,我只是想我會提及它以備將來參考)。
我懷疑你將不得不單獨更改每一個雖然對你的源代碼的簡單搜索「選擇」或「第一」將是一個良好的開端。
然後,您可以決定如何您想要更改它們,因爲您可能仍然希望它在Informix上工作。
對於它的價值,我覺得你得到同樣的效果Oracle的
select * from (select * from mytable) where rownum <= 10
我會種地的動態構造查詢(基於模板)到另一個層面,因此可以返回工作根據您配置的數據庫進行不同的查詢。然後,當您還想支持DB2時(例如),只需更改該層即可。
例如,有這樣一個電話:
3210這將使你任:
select first 10 * from test
select * from test where rownum <= 10
我還要提到,雖然我知道您的查詢只是一個例子,即SQL可以返回任意訂單如果您沒有指定order by
那麼
select first 10 * from test
變得毫無意義,尤其是如果你可以在不同的DBMS運行它。
1
你可以寫一個擴展到JDBC驅動程序,以動態修改查詢,但可能是矯枉過正,所以仔細的搜索和替換的源代碼修改所有的查詢會更合適。
0
甲骨文擁有ROWNUM限制結果的概念。你將不得不更新你的查詢。
0
TOP-n和分頁查詢比使用ROWNUM稍複雜一點。例如,當您在同一個查詢中使用帶有ORDER BY的ROWNUM時,您可能會感到驚訝。
查詢http://www.oracle.com/technology/oramag/oracle/07-jan/o17asktom.html以獲取有關Oracle中這些類型查詢的更多信息。
相關問題
- 1. 從Oracle遷移到VoltDB
- 2. 將SAP Oracle遷移到PostgreSQL
- 3. 從Oracle遷移到MySql
- 4. Talend遷移Oracle到Postgres
- 5. Oracle Forms遷移到Oracle APEX 5.1
- 6. SQL開發人員mysql到oracle遷移
- 7. 將虛擬列從oracle遷移到postgres
- 8. 軟件包轉換 - Oracle到PostgreSQL遷移
- 9. 從oracle到sql server 2008的遷移
- 10. 從Oracle遷移到PostgreSQL編碼錯誤
- 11. Rails 3從MySQL遷移到Oracle
- 12. 將Django項目從MySQL遷移到Oracle
- 13. 從6i到11g的Oracle表單遷移
- 14. MySQL到Oracle數據庫遷移
- 15. To_Date函數從oracle遷移到SQL Server
- 16. 遷移觸發器Oracle到SQL Server
- 17. 將Informix ESQLC遷移到Oracle Pro * C
- 18. 將Lotus Notes遷移到Oracle 11
- 19. 將Oracle身份驗證遷移到表
- 20. Oracle 9.2遷移到11g - 默認值
- 21. Oracle到SQL Server遷移驗證
- 22. 將rownum從Oracle查詢遷移到MariaDB
- 23. 從Oracle遷移到MySQL或PostgreSQL
- 24. Oracle MS SQL數據遷移
- 25. 如何在Oracle中將Oracle RDB for OpenVMS遷移到MySQL?
- 26. 遷移到IE9
- 27. 遷移到preactjs
- 28. 遷移到MVC3
- 29. 遷移到SharePoint
- 30. 遷移到WKWebView
使用rownum時需要小心 - 它應該幾乎總是用在外部查詢中,例如。 'select * from(...)where rownum <= 10' – 2010-03-12 09:30:38
+1 to ar ..答案已經更新。 – 2010-03-13 02:47:03
正如@paxdiablo暗示的那樣,您需要在內部選擇一個ORDER BY以獲取任何明智的東西。 – 2010-03-17 12:18:22