进步OpenEdge就像SQL在哪里IN?

时间:2016-06-10 17:57:14

标签: progress-4gl openedge

我可以使用字符串来完成此操作并且效果很好。 例如:

for each emp no-lock where
   lookup(emp.name, "james,john,kerry,david") <> 0:
  /* Do something */
end.

现在我的emp.ID不是一个字符串(它是一个整数)我怎么能在哪里做IN?我尝试了类似的方法。它说,它给了我一个错误 &#34;不兼容的数据类型&#34;

for each emp no-lock where
    lookup(emp.ID, "1,5,89") :
  /* Do something */
end.

我该怎么做? 谢谢你

2 个答案:

答案 0 :(得分:1)

OpenEdge有一个SQL-92引擎,但你没有使用它。您正在使用4gl引擎。 4gl引擎中嵌入了一些有限的SQL-89语法,但尝试使用它是一个坏主意。它只会导致痛苦和痛苦

4gl没有IN功能。要执行您尝试使用变量整数集执行的操作,您可能需要首先创建临时表,然后将TT与真实表连接。像这样:

ImagePattern

答案 1 :(得分:0)

在大型数据库表中,要充分利用索引:

FOR EACH emp NO-LOCK WHERE emp.ID = 1 OR emp.ID = 5 OR emp.ID ? 89

小桌子中的懒惰编码器可能会这样做:

FOR EACH emp NO-LOCK WHERE LOOKUP (STRING(emp.ID), "1,5,89") > 0