为SQL Server结果集中的表分配名称

Bra*_*ith 6 .net c# sql-server ado.net dataset

我正在编写一个执行多个连续SELECT语句的存储过程.当我通过ADO.NET执行此过程时,我的目的是最终DataSet包含几个DataTable对象.这表现得如预期.

我目前依托于该表的顺序DataSet匹配的顺序SELECT在存储过程中的语句,但是真的是有顺序没有任何意义.最终必须维护程序的人不应该知道结果的预期顺序,维护申请的人也不应该知道程序中的陈述的顺序.

我想知道的是,是否可以SELECT在存储过程本身的每个语句的结果中分配名称,然后通过ADO.NET(希望无缝地)通过它来通过它的名称来访问每个表它的订单?

例如

// populate DataSet with results from stored proc
DataSet ds = new DataSet();
dataAdapter.Fill(ds);

// now access one of the resulting DataTable via name
return ds.Tables["NamedResultFromTheProc"];
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法实现这一目标?或者我是否必须依赖SELECT语句的顺序并始终通过其索引访问所需的表?

Dav*_*ave 5

我没试过这个,但是你不能改变存储过程的结构,这样你就有一个查询在每个数据查询之前返回表的名字吗?

select 'TableName'
select * from Table where 1 = 1
Run Code Online (Sandbox Code Playgroud)

然后通过创建表并将其添加到手动构建数据集?