当我执行此存储过程时,它将返回5个窗口,但是我想在一个窗口中获得它而不将其转换为字符串查询。
我只发布了简化版查询。我这里有不同的变量和逻辑,每次都会改变。因此,通过循环,我对此进行了管理,并将结果查询加载到C#中的数据集中,当前我在代码中获得了多个数据集并合并了该数据表。根据用户在网页视图上的选择,偶数循环的次数不限于5次,每次都会有所不同。我只想在单个表中获取While循环结果,而不将其转换为字符串查询。如果您有任何解决方案,请指导我。
DECLARE @intFlag INT, @str VARCHAR(MAX)
SET @intFlag = 1
WHILE (@intFlag <= 5)
BEGIN
SET @intFlag = @intFlag + 1
--Complex logical queries here that change every time according to
SELECT * FROM userHistories
END
GO
要求。
答案 0 :(得分:1)
如果所有结果列都相同,则只能将其合并为一个输出。如果您每次都从不同的逻辑获得不同的结果,则需要更改这些结果(通过将缺少的列添加为默认值或为null),以便所有结果都相同。每当您向任何查询中添加新列时,都必须在所有这些查询中对其进行匹配。
然后您有两个选择。如果您有预设的,不变的号码或要运行的查询,则可以执行类似的操作
Select query 1
UNION ALL Select query 2
UNION ALL Select query 3
这将返回一个结果集,但是对于您想要的结果可能太简单了。另一个选择是创建一个临时表或一个表变量,然后更改您要查询的每个查询以将其数据插入该表。最后选择整个表,最后将数据返回给您。看起来像这样(使用表变量)
Declare @Results TABLE (field1 int, field2 string ....)
While ... BEGIN
SET @intFlag = @intFlag + 1
INSERT INTO @Results (field1, field2, ....)
Select field1, field2 .... FROM ....
End
--Now return all the data
Select * from @Results
答案 1 :(得分:0)
根据提供的信息,我将使用一个临时表来存储while循环内生成的每个查询的结果。您甚至可以使用临时表中的增量值,以便更轻松地确定结果来自哪个查询。您确实没有提供足够的详细信息来了解while循环内的可能性,因此我假设数据至少以相同的列数和/或数据类型输出。
其他信息可能会提供更好的答案,但是根据您的描述,我会这样做。