从 SQL 端的存储过程更改返回的表名

本文关键字:返回 存储过程 SQL | 更新日期: 2023-09-27 18:34:57

我编写了一个返回 2 个表的存储过程:

select * 
from workers
select *
from orders

我从我的 C# 应用程序调用此存储过程,并得到一个包含两个表的DataSet,一切正常。

我的问题是如何在 SQL Server 端更改表名,以便在 C# 端我能够通过名称(而不是 Tables[0](访问它:

myDataSet.Tables["workers"]...

我试图在谷歌中寻找答案,但找不到。也许搜索关键字不够。

从 SQL 端的存储过程更改返回的表名

您实际上无法从服务器端执行任何操作来影响这些表名称 - 这些名称仅存在于客户端的 ADO.NET 代码中。

您可以在客户端添加表映射

,如下所示:
SqlDataAdapter dap = new SqlDataAdapter(YourSqlCommandHere);
dap.TableMappings.Add("Table", "workers");
dap.TableMappings.Add("Table1", "orders");

这会在实际填充数据之前将Table(第一个结果集("重命名"为 workers,将Table1(第二个结果集(重命名为orders。所以在打电话后

dap.Fill(myDataSet);

然后,您将可以使用myDataSet.Tables["workers"]myDataSet.Tables["orders"]

TDS 协议文档(用于从 SQL Server 返回结果的协议(未提及"结果集名称"。因此,您能够访问 ADO.net 中的结果集的唯一方法是按示例中提到的数字。