The following query works when run from the console via db2 command. But fails when running 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 gives the following result
SQL Error [42601]: An unexpected token "END-OF-STATEMENT" was found following "WHERE ID = R.ID". Expected tokens may include: "<psm_semicolon>".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.26.14

;--for an in-block statement terminator only works in the CLP. You need to choose a different terminator for the block and configure your client accordingly