gpt4 book ai didi

informix - If inside If in Informix 存储过程

转载 作者:行者123 更新时间:2023-12-02 22:05:09 29 4
gpt4 key购买 nike

在 Informix 存储过程中,我有一些情况是这样的:-

     If val1 > 0                   // 1st If
Select count(*) of value from a table and stored it in a Variable say VALUE
If VALUE > 0 // 2nd If
perform UPDATE
ELSE // Intended ELSE for 2nd IF
Perform Insert
END IF
ELSE // Intended ELSE for 1st IF
perform Operation X
END IF

我如何看待我的执行总是在 ELSE Intended for 1st IF 中进行,这给我带来了问题。有人可以让我知道我怎样才能更正这个或者我在哪里走错了。问候

最佳答案

显式关键字 END IF 表示 SPL 中 IF 语句的嵌套是明确的。翻译和缩进您的代码产量:

 IF val1 > 0 THEN
SELECT COUNT(*) INTO value FROM SomeTable;
If VALUE > 0 THEN
Perform UPDATE
ELSE
Perform INSERT
END IF
ELSE
Perform Operation X
END IF

绝对不能有歧义;由于显式的 END IF 表示法,不存在“其他悬垂”问题。

如果执行了错误的代码,那么当其中一个比较数为 NULL 时,您可能会被三值逻辑和比较行为所捕获。例如,如果 val1 为 NULL,则 perform Operation X 将始终执行,因为 val1 > 0NULL > 0 计算结果为 NULL,这不是 TRUE,因此采用 ELSE 子句并执行操作 X。

作为noted通过 ceinmart ,您可以使用 SET DEBUG FILETRACE ON 来调试执行存储过程时发生的情况。

关于informix - If inside If in Informix 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250852/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com