7. OpenSQL Features : Error Handling : Handling Deadlock : Single Cursor Template for Handling Deadlock
 
Share this page                  
Single Cursor Template for Handling Deadlock
This template is similar to the first, but with a single cursor added.
exec sql whenever not found continue;
exec sql whenever sqlwarning continue;
exec sql whenever sqlerror goto err;
/* branch on error */

exec sql declare c1 cursor for ...

start:
exec sql open c1;
while more rows loop
  exec sql fetch c1 into ...
  if (sqlca.sqlcode = E_GE0064_NO_MORE_DATA) then
   exec sql close c1;
   exec sql commit;
   goto end;
  end if;

  exec sql insert into ...
  exec sql update ...
  exec sql select ...

end loop;
goto end

err:
exec sql whenever sqlerror call sqlprint;
if (sqlca.sqlcode = E_GEC2EC_SERIALIZATION) then
  goto start;
else if (sqlca.sqlcode \ 0) then
  exec sql inquire_sql (:err_msg = errortext);
  exec sql rollback;
  print 'Error', err_msg;
end if;

end: