我在 SQL Server 2008 中使用 jtds 1.2.2 驱动程序。下面是我尝试执行的查询
SELECT * from AM_API FETCH NEXT 10 ROWS ONLY
无论如何执行上述查询后,我得到以下错误
Caused by: java.sql.SQLException: Invalid usage of the option NEXT in the FETCH statement.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2816)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2254)
at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:631)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:777)
at org.jaggeryjs.hostobjects.db.DatabaseHostObject.executeQuery(DatabaseHostObject.java:510)
知道如何解决这个问题吗?
更新
我读过这篇文章,说 FETCH 仅在 SQL Server 2012 及更高版本上工作。然后如何在 SQL Server 2008 中限制结果。要执行的查询不在我的控制之下。我只是对查询进行后缀FETCH NEXT 10 ROWS ONLY
以限制结果。那么有没有办法通过添加限制查询作为查询的后缀来限制结果。
升级到 SQL Server 2012 会有所帮助,但您仍然会遇到同样的错误。从文档中:
要从表中返回不确定的 10 行,您可以在 SQL Server 2012 中执行此操作:
如果您无法升级,您还有一些额外的选择。对于语句不推荐使用SET ROWCOUNT
SELECT
,因此以下内容应适用于 SQL Server 2008:您还可以使用 TOP 表达式: