mise à jour Disons que j'ai un déclencheur comme ceci:T-SQL: Une bonne façon de fermer/curseur DEALLOCATE dans la gâchette
CREATE TRIGGER trigger1
ON [dbo].[table1]
AFTER UPDATE
AS
BEGIN
--declare some vars
DECLARE @Col1 SMALLINT
DECLARE @Col1 TINYINT
--declare cursor
DECLARE Cursor1 CURSOR FOR
SELECT Col1, Col2 FROM INSERTED
--do the job
OPEN Cursor1
FETCH NEXT FROM Cursor1 INTO @Col1, @Col2
WHILE @@FETCH_STATUS = 0
BEGIN
IF ...something...
BEGIN
EXEC myProc1 @param1 = @Col1, @Param2 = @Col2
END
ELSE
IF ...something else...
BEGIN
EXEC myProc2 @param1 = @Col1, @Param2 = @Col2
END
FETCH NEXT FROM Cursor1 INTO @Col1, @Col2
END
--clean it up
CLOSE Cursor1
DEALLOCATE Cursor1
END
Je veux être sûr que Cursor1 est toujours fermé et désalloué. Même myProc1 ou myProc2 échoue. Dois-je utiliser try/catch block?
[Lecture obligatoire] (http://www.sommarskog.se/error-handling-I.html). –