Naar mijn mening is een dynamisch PL/SQL-blok enigszins obscuur. Hoewel het erg flexibel is, ook moeilijk af te stemmen, moeilijk te debuggen en moeilijk te achterhalen wat er aan de hand is. Mijn stem gaat naar uw eerste optie,
EXECUTE IMMEDIATE v_query_str INTO v_num_of_employees USING p_job;
Beide gebruiken bindvariabelen, maar ten eerste is het voor mij meer herdefinieerbaar en afstembaar dan de optie @jonearles.