Firebird error code of the error in a WHEN …​ DO block

Available inPSQL




In a WHEN …​ DO error handling block, the GDSCODE context variable contains the numeric value of the current Firebird error code. GDSCODE is non-zero in WHEN …​ DO blocks, if the current error has a Firebird error code. Outside error handlers, GDSCODE is always 0. Outside PSQL, it doesn’t exist at all.


After WHEN GDSCODE, you must use symbolic names like grant_obj_notfound etc. But the GDSCODE context variable is an INTEGER. If you want to compare it against a specific error, the numeric value must be used, e.g. 335544551 for grant_obj_notfound.


  |when gdscode grant_obj_notfound, gdscode grant_fld_notfound,
  |   gdscode grant_nopriv, gdscode grant_nopriv_on_base
  |  execute procedure log_grant_error(gdscode);
  |  exit;