我们正在使用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