public static DataTable CustOrderHist(System.String customerId)
In C#, you can pass 'null' where it expects String, but if it expected Int32 - you can not pass null value. For example, if the signature of the method was:
public static DataTable CustOrderHist(System.Int32 customerId)
you wouldn't be able to pass null. This means that the generated templates restrict you from passing null and skipping parameters. I said why you can't pass null, now I will explain why you can't skip parameters. You can not do it, because the generated method expects, let's say, 4 parameters and if you pass 2 it won't compile.
I hope I explained my problem well this time