【发布时间】:2016-11-16 00:16:53
【问题描述】:
我在 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
我很好奇我做错了什么?
【问题讨论】:
标签: stored-procedures db2