Meiner Meinung nach ist ein dynamischer PL/SQL-Block etwas undurchsichtig. Obwohl es sehr flexibel ist, ist es auch schwer zu tunen, schwer zu debuggen und schwer herauszufinden, was los ist. Meine Stimme geht an Ihre erste Option,
EXECUTE IMMEDIATE v_query_str INTO v_num_of_employees USING p_job;
Beide verwenden Bind-Variablen, aber erstens ist sie für mich redefähiger und abstimmbarer als die @jonearles-Option.