从SQL Server查询中获取两个结果集会产生两个不同的输出

时间:2015-02-04 21:32:21

标签: sql-server c#-4.0

我创建了一个存储过程,它可以在我的本地sql server数据库上正常工作,但同样的过程不适用于bigrocks的Live Server。实际上我在两个不同的查询中从两个表中获取数据,在实时环境中,第一个查询的数据只是获取。

请建议如何解决这个问题。

CRAETE procedure [dbo].[usp_RegisterTable_GetAllUserName]
as
begin

select [User_Id],UserName from RegisterTable where Status='Active' 
select [User_Id],UserName from DistributerTable where Status='Active'
end

谢谢..

2 个答案:

答案 0 :(得分:1)

您可以为这些查询创建两个不同的过程,并在应用程序代码中合并结果集。我举个例子

CREATE PROCEDURE FromRgisterTable
AS
BEGIN
select [User_Id],UserName from RegisterTable where Status='Active'
END

CREATE PROCEDURE FromDistributerTable
AS
BEGIN
select [User_Id],UserName from DistributerTable where Status='Active'
END

在c#中的应用程序代码中

            DataTable dt1 = new DataTable();
            DataTable dt2 = new DataTable();
            SqlDataAdapter sqlda1 = new SqlDataAdapter("FromFirstProcedure", Connect());
            sqlda1.SelectCommand.CommandType = CommandType.StoredProcedure;
            sqlda1.Fill(dt1);
            SqlDataAdapter sqlda2 = new SqlDataAdapter("FromSecondProcedure", Connect());
            sqlda2.SelectCommand.CommandType = CommandType.StoredProcedure;
            sqlda2.Fill(dt2);
            dt1.Merge(dt2);

我认为应该完成你的工作。

答案 1 :(得分:0)

你试过了吗?

select [User_Id],UserName 
from RegisterTable 
where Status='Active' 

UNION ALL

select [User_Id],UserName 
from DistributerTable 
where Status='Active'

或者您正在寻找两种不同的结果集?