如何限制Progress 9.1D09中的选择结果行?

时间:2013-06-25 09:20:57

标签: sql progress-db

我正在尝试从Progress 9.1D09数据库中提取数据。我知道这不是Progress的最新版本,但升级不是一种选择。该数据库由一个垂死的程序使用,我正在将数据移动到其后继者。

一个表有162000行。我想使用少量行。

在SQL Server中,我会将查询更改为“从...中选择前100 *”。在MySQL中我会做“select * from ... limit 0,100”。

到目前为止,这些语法都没有工作,谷歌搜索正确的语法使我失望。

如何使用SQL限制源数据中的行数?

2 个答案:

答案 0 :(得分:1)

规则#1 - 进度不是SQL。 Progress确实支持SQL-92接口,并且还嵌入了SQL-89语法 - 但SQL不是Progress DB的本地语言。

如果您使用的是嵌入式SQL-89,则不支持TOP。嵌入式SQL通过4GL引擎访问。如果您不使用ODBC或JDBC,则可能尝试使用嵌入式SQL-89。如果语法如:

FOR EACH customer NO-LOCK:
  DISPLAY customer.
END.

然后你正在使用4GL,因此使用嵌入式SQL-89。

4GL解决方案可能如下所示:

Getting first 100 records from the table in Progress OpenEdge database (e.g. SELECT TOP 100..)

如果您通过ODBC驱动程序使用SQL-92,那么有时会在10.1B中添加TOP支持

http://knowledgebase.progress.com/articles/Article/P13258

所以你对v9运气不好。

答案 1 :(得分:0)

您可以尝试类似

的rownumber
SELECT FirstName, LastName, ROW_NUMBER() 
  OVER (ORDER BY PostalCode) AS 'RowNumber' 
  WHERE RowNumber BETWEEN(4,100)