Things to check
1) Make sure you are testing like for like, ie, using binds in both cases, using the same bind variable values and datatypes
2) Do you see the same behaviour with EXECUTE ie
EXEC SQL EXECUTE
BEGIN
SP_INTL_BATCH(:l_wrapper, :l_func, :p_env_data, :l_paramstr, :l_user,:l_error);
END;
END-EXEC;
3) Enable tracing in Pro*c just before the call, eg
EXEC SQL EXECUTE
BEGIN
dbms_monitor.session_trace_enable(waits=>true,binds=>true);
END;
END-EXEC;
and disable it after the call and examine the trace file to see if the slow down is *in* the plsql code, or to do with the call between pro*c and plsql
4) Is it *all* procedure calls, or just this one ?