0

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

一张表有 162000 行。我想处理少量的行。

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

这些语法都不起作用,到目前为止,我在谷歌上搜索正确的语法都失败了。

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

4

2 回答 2

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 解决方案可能如下所示:

从 Progress OpenEdge 数据库中的表中获取前 100 条记录(例如 SELECT TOP 100..)

如果您通过 ODBC 驱动程序使用 SQL-92 -- TOP 支持在 10.1B 中的某个时候添加

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

所以你对v9不走运。

于 2013-06-25T13:31:19.340 回答
0

您可以尝试 rownumber 之类的

SELECT FirstName, LastName, ROW_NUMBER() 
  OVER (ORDER BY PostalCode) AS 'RowNumber' 
  WHERE RowNumber BETWEEN(4,100)
于 2013-06-25T12:13:42.507 回答