2012-05-22 1 views
1

Я написал один хранимую процедуру, которая возвращает 2 таблицы:Изменения возвращается имя таблицы из хранимой процедуры на стороне SQL

select * 
from workers 

select * 
from orders 

Я называю эту хранимую процедуру из моего приложения C# и получить DataSet с двумя столами, и все работает нормально.

Мой вопрос, как я могу изменить таблицы имя на стороне SQL Server, так что в C# стороне я буду иметь возможность получить к нему доступ с помощью имени (вместо Tables[0]):

myDataSet.Tables["workers"]... 

Я попытался найти ответ в Google, но не смог его найти. Возможно, ключевых слов поиска недостаточно.

+0

Вы говорите, что хотите изменить имя таблиц на стороне SQL? Вопрос, похоже, больше связан с C# и, вероятно, с ADO.NET. DataSets не являются частью системы SQL Server, так как вы ссылаетесь на них. – Namphibian

+0

Вы можете использовать перечисление на C# для достижения чего-то очень похожего, и вы получите выгоду от intellisense. – Dan

ответ

4

Вы не можете ничего делать с серверной стороны, чтобы влиять на эти имена таблиц - эти имена существуют только на стороне клиента, в вашем коде ADO.NET.

Что вы можете сделать это на стороне клиента - добавить таблицу сопоставления - что-то вроде:

SqlDataAdapter dap = new SqlDataAdapter(YourSqlCommandHere); 
dap.TableMappings.Add("Table", "workers"); 
dap.TableMappings.Add("Table1", "orders"); 

Это «переименовать» в Table (первый набор результатов) для workers и Table1 (второй результат set) до orders, прежде чем вы действительно заполните данные. Таким образом, после вызова

dap.Fill(myDataSet); 

вы бы тогда myDataSet.Tables["workers"] и myDataSet.Tables["orders"] доступны для использования.

+0

Благодарю вас обоих за подробные ответы – user1409590

0

TDS Protocol documentation (Это протокол, используемый для возврата результатов от SQL Server) не упоминает «имя набора результатов». Таким образом, единственный способ получить доступ к наборам результатов в ADO.net - это число, указанное в вашем примере.

+0

Благодарю вас обоих за подробные ответы – user1409590

Смежные вопросы