【发布时间】:2023-04-03 12:49:01
【问题描述】:
我有一个 MS SQL 存储过程,它使用游标循环选择语句的记录。当我循环读取每条记录时,它可能是 3,然后是 3,然后是 3,或者可能是 3,然后是 4,然后是 5,然后是 3。它可能是一条记录,也可能是多条记录。
我需要知道的是所有值都相同还是不同?我不在乎它们是什么,只要它们相同或不同。如果我使用客户端代码执行此操作,我将使用一个列表并查看该值是否在列表中,然后当我完成后,我会计算这些值,如果一个则相同,如果大于 1,则不同。
DECLARE TC CURSOR LOCAL
FOR SELECT ProgramID FROM tblPublications
OPEN TC
FETCH NEXT FROM TC INTO @ProgramID
WHILE @@FETCH_STATUS = 0
BEGIN
Print @ProgramID
--Same or Different then the last one???
FETCH NEXT FROM TC2 INTO @ProgramID
END
CLOSE TC
DEALLOCATE TC
END
如果它们相同,我将以一种方式更新记录,如果它们不同,则以另一种方式更新状态记录。
谢谢
【问题讨论】:
-
可能有更好的方法可以在没有循环或游标的情况下完成您正在做的事情。你会扩展你的问题吗?
-
我们不想在sql中计算值时使用循环。我们使用聚合来代替。像 count(YourValue) 这样的东西。给我们一些关于数据和所需输出的实际细节,我们可以提供帮助。这是一个很好的起点。 spaghettidba.com/2015/04/24/…
-
我有一份属于各个部门作者的出版物列表。如果所有作者都来自同一部门,则该出版物被视为 INTRA 部门,如果多个部门参与了该出版物的编写,则该出版物被视为 INTER 部门。我的记录集包含基于 PublicationID 的部门/programid so-- SELECT ProgramID where PublicationID = 12345- 现在我需要查看 ProgramID 是相同还是不同
标签: sql-server stored-procedures cursor