SQL Server SP获取具有相关数据的多个游标的最佳方式

时间:2009-09-03 14:22:41

标签: sql sql-server

使用一次db往返获取SP的相关记录的最佳技术是什么。我需要在C#中的应用程序级别创建Master.List结构。

我有主 - 详细信息表: 1.我需要在详细信息表中搜索行。 2.我需要在主表中找到相应的行。 我需要返回两个游标:    答:主表中的所有相应行。    B:对于主表中的每一行,其详细信息表中的所有记录。

我可以通过使用内存表(没有太多记录)来实现,是不是很好?

DECLARE @MasterIds TABLE (Id uniqueidentifier)

INSERT INTO @MasterIds (Id)
  SELECT DISTINCT [MasterId]
    FROM [Details]
    WHERE [ColumnA] = 'Α'

SELECT *
  FROM [Master]
  WHERE [Id] IN (SELECT * FROM @MasterIds)

SELECT *
  FROM [Detail] D
  JOIN @MasterIds M
  ON D.Id = M.Id

2 个答案:

答案 0 :(得分:1)

假设您有SQL2000或更高版本,我会使用XML来执行此操作:

SELECT *
FROM [Master]
LEFT OUTER JOIN [Detail]
ON [Detail].Id = [Master].Id
WHERE [Master].[Id] IN (SELECT [MasterId] FROM [Details] WHERE [ColumnA] = 'Α')
FOR XML AUTO

答案 1 :(得分:1)

我经常在一个存储过程调用中返回多个记录集

在您的情况下,您可以这样做。表变量很有用,但不能很好地扩展。

SELECT * FROM [Master] M WHERE EXISTS (
        SELECT * FROM [Details] D WHERE D.[ColumnA] = 'Α' AND D.MasterId = m.iD)

SELECT * FROM [Detail] D WHERE D.[ColumnA] = 'Α'