If you have an *unknown* number of binds, then you are into dbms_sql territory.
If you have "known unknown" number of binds, ie, it is (say) between 1 and 10, you could code accordingly, ie
if bind_count = 1 then
forall
execute immediate '..' using :1
elsif bind_count = 1 then
forall
execute immediate '..' using :1, :2
etc etc