Diciamo che ho un innesco come questo:T-SQL: Un modo corretto di CHIUDERE il cursore/DEALLOCATE nel trigger di aggiornamento
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
voglio essere sicuro che Cursor1 è sempre chiuso e deallocato. Persino myProc1 o myProc2 non riescono.
Devo usare il blocco try/catch?
[Lettura obbligatoria] (http://www.sommarskog.se/error-handling-I.html). –