Instead of dealing with complex types, I have a single method in my web services that accepts a stored proc name and a xmlstring of parameters. The web service method translates the xml parameters into sql parameters, and calls the stored proc, which then returns its datasat as xml.
One type to rule them all. :)
I wrote a tip/trick that discusses this technique:
Pass Dynamic List of Parameters to Web Service
When you get your dataset back, simply load it into a dataset, and Bob's your uncle.