Moim zdaniem dynamiczny blok PL/SQL jest nieco niejasny. Chociaż jest bardzo elastyczny, jest również trudny do dostrojenia, trudny do debugowania i trudny do ustalenia, co się dzieje.Moje głosowanie dotyczy twojej pierwszej opcji,
EXECUTE IMMEDIATE v_query_str INTO v_num_of_employees USING p_job;
Oba używają zmiennych bind, ale po pierwsze, dla mnie jest bardziej czytelny i dostrajalny niż opcja @jonearles.