Thanks for the reply Morten. I guess what confused me was that the author used the same name for the recordset return table as the table he was querying. I'm still a little confused because the next thing he does is: DataTable dataTable = ds.Tables[0]; If a single recordset table is returned isn't the [0] redundant? How can one return more than a single recordset table? Thanks