什么是最好的方式做到的语义等同的传统sleep()system call从内Informix SPL程序?换句话说,只需"暂停"N秒(或毫秒或什么,但是几秒钟都是优良)。我在寻找一个解决方案,并 涉及联的一些新的(也许是我写的)C的代码或其他图书馆成Informix server.这有什么我可以做纯粹从SPL。一个解决方案ID10或11个将被罚款。

@基金会的"明显的"答案是不是很明显我说!我不知道有关系统的命令。谢谢你!(是的,我的家伙你认为我。)


是的,这是进行调试的目的。不幸的是,目前的内SPL将始终返回相同的价值,设在进入呼叫:

"任何话到当前从内部产功能,这一执行功能(或者执行程序)的发言援引返回的价值系统的时钟声功能开始。"

IBM Informix指南SQL

包装目前在其自己的子程序并没有帮助。你做得到不同的答案在第一次打电话给你的包装(提供你使用一年级(5)或一些其他类型有足够高的分辨率显示的差别),但是然后你得到相同的价值对每一个后续调,这确保任何种类的循环将永远不会终止。

有帮助吗?

解决方案

必须有一些很好的理由你不想显而易见的回答:SYSTEM "sleep 5".如果所有你想要的是用于SPL暂停,而你检查各种价值观等,这里有几个想法(所有这些都是彻底的黑客,当然):

  1. 让的跟踪文件的一个命名管道(假设Unix后端),因此它块,直到你选择阅读它,或
  2. 另外创建一个表,你SPL民意调查的特定条目,从而循环,并插入上述行从其他地方(可怕的低效率)
  3. 确定锁定模式你的朋友:执行"组锁定模式,等待n"并故意再次查询表,你们已经持一个标开放。你会需要这个包裹在一个例外处理程序,当然。

希望是一些帮助(如果你是一样的JS索再解放联盟和玫瑰::DB名誉,这是我至少可以这样做;-)

其他提示

我假定你想要这个"暂停"进行调试的目的,否则考虑它,你就会总是有一些更好的任务,以做为你的服务器上睡觉...

一个建议:也许你可以获得当前,添加这几秒钟(让mytimestamp)然后在一段时间的循环选择的当前虽然目前的 <=mytimestamp.我没有informix设置围绕我的办公桌上来试试吧,这样你就必须找到正确的语法。再次,不要把这样一个黑客在一个生产服务器。你已经被警告:D

然后你就必须经目前在另一个功能,你会打电话给从第一(但是,这是一个黑客在前一个黑客...).

我知道答案为时太晚。但是我最近遇到了同样的问题,这个网站表示作为第一个。所以这是有益于他人的地方新的明显的下降,在这里。

完美的解决方案找到Eric数量锐减,并公布在2012年在这里: 怎么睡(或收率)的固定时间在一个存储程序 不幸的是,这个网站已关闭。

他的解决办法是使用以下功能:

integer sysadmin:yieldn( integer nseconds )
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top