我在DB2中有以下存储过程:无法取消查询在DB2
CREATE OR REPLACE PROCEDURE CANCEL_ACTIVITY (IN application_handle INTEGER)
LANGUAGE SQL
BEGIN
DECLARE UOW_ID INTEGER;
DECLARE ACTIVITY_ID INTEGER;
FOR v AS cur1 CURSOR FOR
SELECT UOW_ID, ACTIVITY_ID FROM TABLE(SYSPROC.MON_GET_ACTIVITY(application_handle, -1))
DO
CALL WLM_CANCEL_ACTIVITY(application_handle, v.uow_id, v.activity_id);
END FOR ;
END
使用下面的查询,我能找到我的连接ID:
SELECT MON_GET_APPLICATION_HANDLE() from SYSIBM.SYSDUMMY1
这将返回一个值如36547
。所以,我呼吁我只是喜欢这样创建的过程:
CALL CANCEL_ACTIVITY(36547);
其结果是,我得到如下:
不过,如果我执行一遍获取连接ID的查询,它似乎并不像连接ID已经消失。我仍然得到返回值36547
。
我很困惑这个查询取消是否可以工作。我正在执行代码的不同环境中出现一系列不同类型的错误。
当我将它作为SQL查询运行时,出现上述错误代码/响应。当我的代码在我的网页中执行时,出现以下错误:
Cannot cancel queries: Java::ComIbmDb2JccAm::SqlDataException: DB2 SQL Error: SQLCODE=-802, SQLSTATE=22003, SQLERRMC=null, DRIVER=4.16.53
我很好奇我在做什么错?
嗨@data_henrik - 感谢您的解释。这是完整的查询来取消一项活动吗? 'CALL WLM_CANCEL_ACTIVITY(1,2,5)' – theGreenCabbage
是的,应用程序句柄/ UOW标识符/活动ID。 –
等一下,如果你看看我的程序,那是我在做什么,不是吗?我使用'CALL WLM_CANCEL_ACTIVITY(..)' – theGreenCabbage