我們正在使用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. Teradata到Oracle遷移
- 2. EF遷移到Oracle
- 3. Talend遷移Oracle到Postgres
- 4. 從Oracle遷移到MySQL
- 5. 從Oracle遷移到SAP HANA
- 6. 從Oracle遷移到MySql
- 7. Oracle Apex - 遷移到Font Apex
- 8. 從Oracle遷移到VoltDB
- 9. 將SAP Oracle遷移到PostgreSQL
- 10. 使用經典asp遷移Oracle到Oracle
- 11. Oracle Forms遷移到Oracle APEX 5.1
- 12. Oracle CharacterSet遷移CSSCAN
- 13. 如何將數據從SQL Server 2008遷移/遷移到ORACLE 11g?
- 14. 從6i到11g的Oracle表單遷移
- 15. 的Oracle ADF10克到11g遷移
- 16. 將虛擬列從oracle遷移到postgres
- 17. Rails 3從MySQL遷移到Oracle
- 18. 如何將Oracle視圖遷移到Teradata
- 19. 將Lotus Notes遷移到Oracle 11
- 20. 從Oracle遷移到MySQL或PostgreSQL
- 21. Oracle到SQL Server遷移驗證
- 22. Oracle報告10g到11g遷移問題
- 23. To_Date函數從oracle遷移到SQL Server
- 24. MySQL到Oracle數據庫遷移
- 25. 從Oracle到MySQL的大數據遷移
- 26. 遷移6i到10g Oracle報告
- 27. 遷移觸發器Oracle到SQL Server
- 28. 從Oracle遷移到MySQL的工具
- 29. Oracle到Postgres,MySQL或MS Access遷移
- 30. 軟件包轉換 - Oracle到PostgreSQL遷移
使用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