【问题标题】:How to get oracle query status in Pro*C?如何在 Pro*C 中获取 oracle 查询状态?
【发布时间】:2011-08-23 05:35:11
【问题描述】:

我的代码在服务器上运行 oracle 选择查询。服务器可能是空闲的,也可能在某些时候很忙。现在我正在做的是 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 函数调用而不是使用复杂的代码。

【问题讨论】:

    标签: linux oracle oracle-pro-c


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      相关资源
      最近更新 更多