A consulta a seguir funciona quando executada no console por meio do comando db2. Mas falha ao executar via DBeaver.
BEGIN NOT ATOMIC
FOR R AS C CURSOR WITH HOLD FOR
SELECT ROW_NUMBER() OVER() AS INDEX, ID
FROM A_TABLE a
WHERE a.ID BETWEEN 1 AND 1000
ORDER BY a.ID
DO
UPDATE A_TABLE SET A_COL = 1 WHERE ID = R.ID;--
IF MOD(R.INDEX, 100) = 0 THEN
COMMIT;--
END IF;--
END FOR;--
COMMIT;--
END;
DBeaver dá o seguinte resultado
Erro SQL [42601]: um token inesperado "END-OF-STATEMENT" foi encontrado após "WHERE ID = R.ID". Os tokens esperados podem incluir: "<psm_semicolon>".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.26.14
Como mustaccio aponta, você precisa alterar seu terminador de instrução. No DBeaver você pode fazer isso:
Agora você pode alterar o delimitador de instrução