If you want to know what request handles do and why they are saved, here's the long answer. Requests are prepared statements and they persist until they are released explicitly or the connection ends. Most of the utilities keep an array of request handles so they can reuse prepared requests. If there is no values stored for this request, the code above stores the prepared request handle in the array. A restriction is any comparison.
Firebird allows multiple transactions per connection.
In the case below, this request is run in the system transaction - not available outside the engine. Here's the whole request. It uses both request options and saves the compiled request handle if it has not been saved before. It also checks for the existence of a non-default security class that it should delete. The database block carries state information about the database and connection.