W moim przypadku otrzymałem ten wyjątek nawet wtedy, gdy wszystkie wartości parametrów zostały podane poprawnie, ale typ polecenia nie został określony :
cmd.CommandType = System.Data.CommandType.StoredProcedure;
Oczywiście tak nie jest w powyższym pytaniu, ale opis wyjątku w tym przypadku nie jest zbyt jasny, więc postanowiłem to sprecyzować.