我的代码在服务器上运行 oracle 选择查询。服务器可能是空闲的,也可能在某些时候很忙。现在我正在做的是 Pro*C 中的超时机制,它在 10 秒后超时并取消正在运行 oracle 查询的线程(如果它仍在运行)。
现在,我面临的问题是超时函数计划在 10 秒后终止线程,而且它做得很好。但是,它无法确定 oracle 查询在终止时是否仍处于等待状态,或者它正在返回结果/正在执行过程/等等……
我想要的是一个功能/机制/任何能够查询启动的 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 函数调用将是最好的选择,而不是使用复杂的代码。