gpt4 book ai didi

informix - 在 Informix SPL 过程中休眠

转载 作者:行者123 更新时间:2023-12-01 14:41:38 26 4
gpt4 key购买 nike

在 Informix SPL 例程中执行与传统 sleep() 系统调用语义等效的最佳方法是什么?换句话说,只需“暂停” N 秒(或毫秒或其他什么,但几秒就可以了)。我正在寻找一种解决方案,它不涉及将一些新的(可能由我编写的)C 代码或其他库链接到 Informix 服务器。这必须是我可以完全从 SPL 做的事情。 IDS 10 或 11 的解决方案就可以了。

@RET - “明显”的答案对我来说并不明显!我不知道 SYSTEM 命令。谢谢! (是的,我就是你认为的那个人。)

是的,它仅用于调试目的。不幸的是,SPL 中的 CURRENT 将始终返回相同的值,设置在调用的入口处:

"any call to CURRENT from inside the SPL function that an EXECUTE FUNCTION (or EXECUTE PROCEDURE) statement invokes returns the value of the system clock when the SPL function starts."

IBM Informix Guide to SQL



将 CURRENT 包装在它自己的子程序中没有帮助。在第一次调用包装器时,您确实会得到不同的答案(前提是您使用的是 YEAR TO FRACTION(5) 或具有足够高分辨率的其他类型以显示差异),但随后您会在每一个上得到相同的值后续调用,确保任何类型的循环永远不会终止。

最佳答案

你不想要明显的答案肯定有一些很好的理由:SYSTEM "sleep 5" .如果您只想让 SPL 在您检查各种值等时暂停,这里有一些想法(当然,所有这些都是彻头彻尾的黑客攻击):

  • 使 TRACE FILE 成为命名管道(假设为 Unix 后端),因此它会阻塞,直到您选择从中读取,或者
  • 创建另一个表,您的 SPL 轮询 WHILE 循环中的特定条目,并从其他地方插入所述行(效率极低)
  • 让 SET LOCK MODE 成为您的 friend :执行“SET LOCK MODE TO WAIT n”并故意重新查询您已经在其上打开游标的表。当然,您需要将其包装在 EXCEPTION 处理程序中。

  • 希望这是一些帮助(如果你是 Ars 和 Rose::DB 的同一个 JS,这是我至少能做的 ;-)

    关于informix - 在 Informix SPL 过程中休眠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5667/

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