Does this answer your INCOMPLETE question?
string connString = 'whatever';
string procName = 'IDontKnow';
getDate(connString, procName);
Dataset dataset = null;
getDate(connString, procName, dataset);
if you look at the code, the first call does not contain dataset as paramter. But when the function is called, it is impliclty considered as null (not because it not passed, but its default value has been specified as null).
Overall, the two calls here will give you same result; even though looking at code it differs.