You might use the cursor for update logic.
open the cursor;
begin transaction;
fetch the update cusror;
as long as you are in this transaction, the currently selected
row will have an U-lock. However if you go on to the next
row, this U-lock is released.
If you want the Locks to be permanent during the transaction
you have to execute a dummy-update on this row which
changes the U-Lock to an X-Lock.
This lock is held until you perform a commit or rollback work.
This is the SE logic as far as I remember. There is no concept
of isolation levels in SE, so you always have 'dirty read'.