为单个查询中多个SQL选择的结果定义表名

本文关键字:结果 定义 选择 SQL 查询 单个 | 更新日期: 2023-09-27 17:47:47

例如,如果我运行以下查询:

select * from table1
select * from table2

并使用DB适配器(C#)运行它,我得到了一个包含两个表的数据集。如何在SQL中定义结果表的名称?

我只能在SQL中执行此操作。我没有访问c#代码的权限。

为单个查询中多个SQL选择的结果定义表名

@Timothy Khouri:这是可以做到的!EDIT:但不是SQL级别的!

您可以在DataAdapter上使用TableMappings。

如果DataAdapter的SelectCommand返回多个结果集,则DataAdapter会使用表映射来填充数据集中相应的DataTables。默认情况下,第一个结果集将被填充到名为"Table"的DataTable,第二个结果集则被填充到一个名为"Table1"等的DataTable。

SqlDataAdapter sqlDa = new SqlDataAdapter();
SqlCommand selectCmd = new SqlCommand();
selectCmd.CommandText = "spReturnMultpileResultSets";
selectCmd.CommandType = CommandType.StoredProcedure;
selectCmd.Connection = this.sqlConnection1;
sqlDa.SelectCommand = selectCmd;
// Add table mappings to the SqlDataAdapter
sqlDa.TableMappings.Add("Table", "Customers");
sqlDa.TableMappings.Add("Table1", "Orders");
// DataSet1 is a strongly typed DataSet
DataSet1 ds = new DataSet1();
this.sqlConnection1.Open();
sqlDa.Fill(ds);
this.sqlConnection1.Close();

参考:

http://blogs.msdn.com/vsdata/archive/2007/03/08/tableadapter-multiple-result-sets.aspxhttp://www.eggheadcafe.com/software/aspnet/32696845/strongly-typed-datasets.aspx