title: T-SQL: A proper way to CLOSE/DEALLOCATE cursor in the update trigger
body: <p>Let's say I've got a trigger like this:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>I want to be sure that Cursor1 is always closed and deallocated. Even myProc1 or myProc2 fails.</p>
  
  <p>Shall I use try/catch block?</p>