我怎样才能在 Progress 4gl 中获得相同的结果?

How can i get the same result in Progress 4gl?

如何在 Progress 4GL 中实现这样的查询

SELECT field1, field2 FROM tbl1 
   WHERE field1 IN (SELECT Field1 FROM tbl2).

我只有 2 个理想,一个是 temp-table,第二个是 CAN-DO() 函数...但是 CAN-DO() 函数使用字符串,所以我必须将这个字段转换为字符串..但这是个坏主意... 我是 Progress 中的新手。

你可以试试这个:

FOR EACH tbl2 FIELDS(tbl2.Field1)
    NO-LOCK,
    EACH tbl1 FIELDS(tbl1.field1 tbl1.field2)
    WHERE tbl1.field1= tbl2.Field1
    NO-LOCK:
 ...
END.

FIELDS 指令是可选的。

如果第二个select比较复杂,你也可以嵌套FOR EACH:

FOR EACH tbl2
    WHERE ...
    NO-LOCK:
    ...
    FOR EACH tbl1
        WHERE tbl1.field1= tbl2.Field1
        NO-LOCK:
     ...
    END.
END.