【问题标题】:how to use for each loop in Progress?如何使用进行中的每个循环?
【发布时间】:2017-01-19 11:02:16
【问题描述】:

基本上我正在尝试做一个简单的加入。我是一个正在进步的初学者,即使我总是在阅读相同的东西......我的问题仍然没有解决! :'( 我正在使用 unixodbc 与我的基地通信,当我使用简单的命令时,这就像一个魅力:SELECT * from PUB."Art"

我知道我必须做一些看起来像这样的事情才能加入 2 个表:

FOR EACH PUB."Art" WHERE (PUB."Art".IdArt = 16969) ,
    EACH PUB."ArtDet" WHERE (PUB."ArtDet".IdArt = PUB."Art".IdArt)
END

但这只会返回我 [ISQL]ERROR: Could not SQLPrepare

然后我尝试使用以下方法简化事情:

for each PUB."Art": display PUB."Art".IdArt end.

我尝试在 for each 循环后加冒号(或不加冒号),使用点/逗号等...但我显然从未使用正确的语法...或者我错过了执行此命令的内容!

有人可以给我建议吗? 非常感谢!

【问题讨论】:

    标签: progress-4gl openedge progress-db


    【解决方案1】:

    您似乎在混合使用 SQL 和 4GL 语法。

    “FOR EACH”是 4GL。 SQL 等效项是“SELECT”。

    (如果您使用的是 4GL,则不需要“PUB”前缀和引用表和字段名称。)

    要使用 SQL(或 4GL)进行连接,请在表名之间使用“,”。对于 SQL,您的语法类似于:

    SELECT * from PUB."Art", PUB."ArtDet"
    

    有关 WHERE 子句、SQL INNER 和 OUTER 连接等的详细信息可以在在线文档中找到:

    https://community.progress.com/community_groups/openedge_general/w/openedgegeneral/1329.openedge-product-documentation-overview

    您需要导航到您的特定版本,然后找到“SQL”指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 2019-07-26
      相关资源
      最近更新 更多