How do I check if a constraint exists on Firebird?
You can query RDB$RELATION_CONSTRAINTS table, if you know the name of the constraint. 
Something like this:

set term ^;
execute block as
begin
    if (exists(
        select 0 from rdb$relation_constraints
        where rdb$constraint_name = 'INTEG_669'
    )) then
        execute statement 'alter table process_category drop constraint INTEG_669';
end
^
set term ;^


Used execute statement because alter table not allowed inside the block and if statement not allowed outside.