Если они оба имеют одинаковую структуру, то почему бы не иметь одну таблицу с параметром, который различает две таблицы? В этот момент все становится простым делом в регистре для параметра, для которого вы получаете набор результатов.
Второй альтернативой являются двойные наборы результатов. Вы можете выбрать несколько наборов результатов из хранимой процедуры. Затем в коде вы либо используете DataReader.NextResult, либо DataSet.Tables (1), чтобы получить второй набор данных. Тогда ваш код будет обязан поместить их в одну коллекцию или объединить две таблицы.
ТРЕТЬЕЙ возможностью является использование оператора IF. Скажем, передайте целое число с ожидаемыми возможными значениями 1, 2, 3, а затем добавьте что-то подобное в свой фактический код хранимой процедуры
if @Param = 1 Then
Select From Table1
if @Param = 2 THEN
Select From Table2
if @Param = 3 Then
Select From Table1 Union Select From Table 2
Четвертой возможностью может быть наличие двух отдельных процедур, одна из которых выполняет объединение, а другая - нет, а затем ответственность вашего кода определить, какую из них вызывать на основе этого параметра, что-то вроде:
myCommandObject.CommandText = IIf(myParamVariable = true, "StoredProc1", StoredProc2")