I've got a user defined type, the industry datatable within an SqlServer database. I've been using Database, DbCommand, etc to call saved methods and obtain a Dataset back. Datasets are handy for the reason that they are able to contain multiple tables.

Now I wish to pass a Datatable in, and so i attempted:

string _strComText = "stored_procedure_name_changed_to_protect_the_innocent";
_objCom = _objDB.GetSqlStringCommand(_strComText);
_objDB.AddInParameter(_objCom, "@BASE_ITEMIDS", DbType.Object, dtItemIds);
_objCom.CommandType = CommandType.StoredProcedure;
dataset = _objDB.ExecuteDataSet(_objCom);

However I have an exception that "@BASE_ITEMIDS" isn't the correct type: "The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 1 ("@BASE_ITEMIDS"): Data type 0x62 (sql_variant) comes with an invalid type for type-specific metadata."

I have seen this completed with SqlReader, but could sqlReader be employed to return multiple tables? If my first table is empty, I do not use whatever rows in SqlReader.

can sqlReader be employed to return multiple tables?

Yes. You need to read each table in sequence and call the .NextResult() method between tables.

using (var rdr = MySqlCommand.ExecuteReader())
       while (rdr.Read())
           //do something with each record
    } while(rdr.NextResult());