因此,我将一个ClientID传递给我的DB,并使用它查找它们的所有细节,然后我想使用这些细节来使所有其他用户都能与这些细节紧密匹配。我已经写了所有这些,但我的问题是,我想返回初始用户的详细信息也。例如;
Select Details = @UserDetails
from UnregisteredUserTable
where UserId = @UserID
Select BunchOfUsersWithMatchingData
from RegisteredUserTable
where UserDetails like @UserDetails
显然我删除了不必要的信息。但是如您所见,这将返回匹配用户的所有数据,但不返回初始用户的详细信息。我能用个CTE吗?
更新
抱歉,我不知道我的数据访问有多重要。我做了很多以下的自动取款机,但可以改变它没有问题。
Dim results = thisObjectContext.MatcherSP(UserID)
For Each obj In results
TableData.Rows.Add(obj.IdNumber, obj.name,
obj.emailaddress1, obj.telephone1, obj.telephone2, obj.address1_line1,
obj.address1_line2)
Next
更新2
好的,我只是在SP中使用这两个选择,它在Server中运行得很好。但是,当我试图将它添加到Visual中的dbml时,会出现一个奇怪的错误:
无法提取存储过程“dbo.MySP”,因为它的结果集包含多个匿名列。
对此有什么想法吗?
发布于 2012-08-23 00:07:24
http://twogeeks.mindchronicles.com.dnpserver.com/?p=28&cpage=1#comment-37818
精彩的文章,非常清楚地概述了我想要做的事情。
发布于 2012-08-20 01:53:42
嗯,这不是VB代码,但我会尽量简单。
使用SqlDataAdapter填充数据集。这两个select语句的结果将在DataSet中填充不同的表。
cmd.CommandText = "MatcherSP";
cmd.CommandType = CommandType.StoredProcedure;
adapter = new SqlDataAdapter(cmd);
ds = new DataSet();
adapter.Fill(ds);
然后,您可以按以下方式访问数据:
tableA = ds.Tables[0];
tableB = ds.Tables[1];
发布于 2012-08-20 02:26:56
您可以使用SqlDataReader
的nextresult()方法。
using(SqlCommand cmd = new SqlCommand("NameOfSP",c))
{
cmd.CommandType = CommandType.StoredProcedure;
using(SqlDataReader d = cmd.ExecuteReader())
{
while(d.Read()){
//Result data from the first select
}
d.NextResult();
while(d.Read()){
//Result data from the second select
}
}
}
https://stackoverflow.com/questions/12034870
复制相似问题