Я имею следующую хранимую процедуру в 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
Используя следующий запрос, я могу найти свой идентификатор соединения:
SELECT MON_GET_APPLICATION_HANDLE() from SYSIBM.SYSDUMMY1
Что бы вернуть значение, равное 36547
. Поэтому я называю процедуру я только что созданный таким образом:
CALL CANCEL_ACTIVITY(36547);
В результате, я получаю следующее:
Однако, если выполнить запрос, который получает идентификатор соединения снова, это не похоже, что идентификатор соединения ушел. Я все равно получаю возвращаемое значение 36547
.
Я совершенно смущен, работает ли это отмена запроса. Я получаю ряд различных типов ошибок в разных средах, в которых я выполняю код.
Когда я запускаю его как SQL-запрос, я получаю вышеуказанный код ошибки/ответ. Когда мой код выполняется в моей веб-странице, я получаю следующее сообщение об ошибке:
Cannot cancel queries: Java::ComIbmDb2JccAm::SqlDataException: DB2 SQL Error: SQLCODE=-802, SQLSTATE=22003, SQLERRMC=null, DRIVER=4.16.53
Мне интересно то, что я делаю неправильно?
Hi @data_henrik - спасибо за объяснение. Это полный запрос для отмены активности? 'CALL WLM_CANCEL_ACTIVITY (1, 2, 5)' – theGreenCabbage
Да, дескриптор приложения/идентификатор UU/идентификатор активности. –
Подождите, если вы проверите мою процедуру, это то, что я делаю, нет? Я использую 'CALL WLM_CANCEL_ACTIVITY (..)' – theGreenCabbage