Sql - Gespeicherte Prozedur mit der While-Anweisung

ich versuche zu aktualisieren, einige Spalten, die Werte mithilfe einer gespeicherten Prozedur:

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

Aber ich bekomme eine endlos-Schleife, ich denke, es ist, weil der while-Ausdruck.
Also, wie kann ich erstellen Sie diese Prozedur, richtig ? Bitte helfen Sie mir

Beispiel:

Name Position

tskA - 4

tskB - 5

tskc - 7

Ich will, dass das Verfahren setzt die position an 1 , 2 , 3 , .......

Warum sollte die Bedingung in der while ändern?
Ich weiß nicht, aber während der nie endet
Natürlich ist es nie endet Ihr while-Bedingung hat immer das gleiche Ergebnis. Zum Ende der Schleife hat es false. Aber die Auswahl in der immer etwas zurückgibt, weil es ist immer das gleiche wählen.
Ja, mir ist klar, dass. Aber meine Frage ist warum kann ich in der while-Anweisung nur die benötigten Zeilen und aktualisieren Sie den Wert im inneren, Während.
Ok, deine Logik jetzt liest wie diese: "Wenn der Wert von @idGoal in der Tabelle existiert, dann weiter in dieser Schleife". Nun ist die einzige Möglichkeit, diese Schleife zu stoppen ist, wenn dieser Wert hält die bestehenden in die Ziel-Tabelle. Dies ist, warum Sie laufen in einer Endlosschleife.

InformationsquelleAutor mmarques | 2013-06-02

Schreibe einen Kommentar