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

时间:2011-08-23 05:35:12

标签: linux oracle oracle-pro-c

我的代码在服务器上运行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函数调用将是最佳选择,而不是使用复杂代码。

1 个答案:

答案 0 :(得分:0)

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