Oracle 我如何让一个过程等到满足特定条件后再继续代码?

Oracle 我如何让一个过程等到满足特定条件后再继续代码?,oracle,opc,Oracle,Opc,我正在开发一个OPC客户端。该客户机调用一个过程,该过程依次在一个队列表中插入几行 该客户机还有另一个线程,它不时打开队列表,并根据表中的项目更新OPC项目的值。更新每个值后,线程将从队列表中清除该行 我想要的是:我调用过程,它在队列中插入值,并等待另一个线程清除它插入的值,然后执行其他操作 这有可能吗?在其他语言中,我会考虑使用while循环和Sleeps,测试行是否被清除,直到它退出循环 谢谢你的见解 -编辑: 我将尝试进一步澄清: 假设有3种不同的作业类型:插入、更新和最终处理 我可以有许

我正在开发一个OPC客户端。该客户机调用一个过程,该过程依次在一个队列表中插入几行

该客户机还有另一个线程,它不时打开队列表,并根据表中的项目更新OPC项目的值。更新每个值后,线程将从队列表中清除该行

我想要的是:我调用过程,它在队列中插入值,并等待另一个线程清除它插入的值,然后执行其他操作

这有可能吗?在其他语言中,我会考虑使用while循环和Sleeps,测试行是否被清除,直到它退出循环

谢谢你的见解

-编辑:

我将尝试进一步澄清:

假设有3种不同的作业类型:插入、更新和最终处理

我可以有许多不同于插入类型的作业,每个作业都以其唯一ID插入队列:

Insert (ID=1, OPCTag=1)
Insert (ID=1, OPCTag=2)
Insert (ID=1, OPCTag=3)

Insert (ID=2, OPCTag=1)
Insert (ID=2, OPCTag=2)
Insert (ID=2, OPCTag=3)
只有一个更新作业,不断读取和清除队列

我被困在最终处理部分,因为我也会有多个这种类型的作业,就像插入作业一样

我不知道如何触发正确的最终处理作业,它链接到一个INSERT ID,在UPDATE清除了所有具有该INSERT ID的行之后


假设我的更新作业清除了ID为1的所有行。当ID=1的最后一行被清除时,我需要触发一个名为FinalProcessingID1的过程。ID=2时也是如此。

您可以使用dbms_lock.sleep,但我对您的方法有点担心。如果客户意外死亡怎么办?不会从队列表中解列任何内容。Oracle内置了排队功能,这对你的应用程序有效吗?Eaolson的想法是正确的。这里应该有3个作业,一个要插入,一个要更新,一个要进行最终处理。理想情况下,使用一个或多个消息队列(如oracle AQ)或队列表可以很好地进行轮询。