Utiliser “OÙ le COURANT DE la” clause de mettre à jour seulement la ligne sur laquelle le CURSEUR est positionné dans SQL

J'ai le texte suivant curseur dans SQL:

DECLARE @Script varchar(max)

DECLARE @getScript CURSOR

SET @getScript = CURSOR FOR

SELECT [Script]
FROM ScriptTable

OPEN @getScript
FETCH NEXT
FROM @getScript INTO @Script

WHILE @@FETCH_STATUS = 0
BEGIN
    BEGIN TRY
        EXEC(@Script) --Working part.  This executes the query stored in the Script column.
                      --For example INSERT INTO zTest VALUES(VAL1, VAL2, etc etc..)

        UPDATE ScriptTable
        SET DateDone = GETDATE(), IsDone = 1, Err = NULL
        FETCH NEXT
        FROM @getScript INTO @Script 
    END TRY
    BEGIN CATCH
        DECLARE @Err varchar(max)
        SET @Err = ERROR_MESSAGE()

        UPDATE ScriptTable
        SET DateDone = GETDATE(), Err = @Err

    END CATCH
END

CLOSE @getScript
DEALLOCATE @getScript

Q1:
Actuellement, je suis l'obtention de la valeur insérée dans le "test-z" table spécifiée dans mes commentaires quand j'execute EXEC(@Script).

Cependant, la deuxième partie où la "mise à Jour ScriptTable" est, les mises à jour de toutes les lignes dans ma Table de scripts. Je sais que j'ai besoin de spécifier l'ID de la ligne appropriée que le curseur se déplace à travers. La Question est, comment puis-je le faire? Je wan pas uniquement mettre à jour la ligne appropriée, de passer à la suivante, puis mise à jour de celui-là.

T2:
Ma prochaine question est, dans le bloc CATCH, je pense que je suis entrain de créer une boucle infinie dès qu'il y a une erreur dans une des requêtes dans le Script de la Colonne de la ScriptTable que quand je regarde les résultats, il ne cesse d'aller et venir. Je ne veux pas BRISER; la procédure que je veux écrire une erreur pour un Tre colonne et continuer avec les lignes suivantes jusqu'à ce qu'il atteigne la fin de l' @Script, puis de s'arrêter.

IDENT_CURRENT, Scope_Identity etc ne fonctionne pas car je n'ai pas inséré quoi que ce soit dans les Scripts de la Table.

S'il vous plaît aider.

InformationsquelleAutor frans | 2013-09-02