gpt4 book ai didi

linux - Pro*C中如何获取oracle查询状态?

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:44 25 4
gpt4 key购买 nike

我的代码在服务器上运行 oracle select 查询。服务器可能是空闲的,也可能在某些时候很忙。现在我正在Pro*C中制作一个超时机制,在10秒后超时并取消正在运行oracle查询的线程(如果它仍在运行)。

现在,我面临的问题是超时函数被安排在 10 秒后终止线程,而且它做得很好。然而,它无法确定 oracle 查询在终止时是否仍处于等待状态,或者它正在返回结果/执行过程/blah-blah...

我想要的是一个函数/机制/任何能够查询发起的 oracle 查询的状态并执行以下操作的函数/机制/任何东西:10 秒后,

IF (query is still in waiting state)
DO terminate all threads;
ELSE IF (query is fetching data/doing some processing)
DO wait for the fetching/processing to complete and then terminate all threads;

如果可能的话,Pro*C 或 Oracle 函数调用将是最好的选择,而不是使用复杂的代码。

最佳答案

“获取数据/进行一些处理”对您来说意味着什么?一般来说,由于 Oracle 在应用程序获取数据时执行查询,因此查询将在主动运行(这将涉及处于等待状态)和将数据返回给客户端之间交替。例如,如果一次向客户端发送 50 行,Oracle 仅执行足以识别前 50 行的查询,它将这些行发送到客户端,并等待客户端请求接下来的 50 行,然后继续执行查询以提取接下来的 50 行。

关于linux - Pro*C中如何获取oracle查询状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7156684/

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