[英]Sql - Stored Procedure with While statement
我正在尝试使用存储过程更新一些列值:
CREATE PROCEDURE [dbo].[UpdataObjectivesPosition]
@idGoal int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @count int
SET @count = 1
WHILE exists (SELECT * From Objective Where IDgoal = @idGoal)
Begin
Update [Tasks] Set Position=@count
SET @count = @count + 1
End
END
GO
但是我遇到了一个无限循环,我认为这是因为while表达。 那么如何正确创建此过程? 请帮我
例:
tskA-4
tskB-5
tskc-7
我希望程序将位置设置为1,2,3 ......
您根本不需要循环即可实现所需的功能,可以使用ROW_NUMBER()函数来完成此操作:
WITH CTE AS
( SELECT *, rn = ROW_NUMBER() OVER(ORDER BY Name)
FROM Tasks
)
UPDATE CTE
SET Position = rn;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.