1

ストアド プロシージャを使用していくつかの列の値を更新しようとしています。

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 、 ....... に設定したい

4

2 に答える 2

0

これは、私が最近発見した SQL Server ソリューションです。

DECLARE    @Count    INT = ( 
    SELECT  ISNULL(MAX([Position]),0) 
    FROM    [Objective] 
    )

UPDATE [Objective] 
SET     @Count = [Position] = @Count + 1
WHERE  [Position] IS NULL 

二重代入 ( SET @a = @b = @a + 1) を使用します。

SQLフィドル

詳細については

于 2013-06-02T16:27:43.653 に答える