如果那么导致语法[OPENEDGE]语法错误(10713)

时间:2018-06-04 15:54:52

标签: openedge progress-db

我试图针对Progress OpenEdge编写IF / THEN / ELSE,并在我尝试的每次迭代中获得语法错误。我试图选择一组列并进行一些计算。一个计算分为两列,所以我试图检查除数列,以防它为零。

根据我使用的IF / THEN的变化情况,我在声明中略微变化了以下错误。

ERROR [HY000] [DataDirect][ODBC Progress OpenEdge Wire Protocol driver][OPENEDGE] 
Syntax error in SQL statement at or about "= 0 THEN ColumnA ELSE (ColumnA " (10713)

这是我当前的迭代(重命名列以保护无辜。;)

, IF ColumnA = 0 THEN ColumnA 
    ELSE (ColumnA - ColumnB) / ColumnB
    END as ProfitMargin

我开始使用别名列(POS.ColumnA& POS.ColumnB)并在某处读取完全限定列可能导致问题,因此我删除了别名。

我试过了IF POS.ColumnA = 0 THEN 0。我也尝试过ELSE DO:我在END之后添加THEN ColumnA。我把完整的计算放在另一组算盘中。

我把自己置于S.O.的怜悯之下。我错过了什么?

1 个答案:

答案 0 :(得分:0)

我在OpenEdge SQL文档中的任何地方都看不到IF / THEN / ELSE:

https://documentation.progress.com/output/OpenEdge117/openedge117/#page/dmsrf/preface.html#

或:

https://documentation.progress.com/output/OpenEdge117/openedge117/#page/dmsrf%2Fsearch-condition.html%23

DO:......结束。一种语法是4gl语法 - 你不能在SQL引擎中使用它。