create/alter procedure <SP Name> /*--------------------------------------------------------------------------- DESCRIPTION: This procedure will get the list of users. AUTHOR: DATE: PARAMETERS: Parameter 1: Description of parameter1 Parameter 2: Description of parameter2 RETURN VALUE: AFFECTED TABLES: Table1 Table2 ---------------------------------------------------------------------------*/ @DiscussionID uniqueidentifier ... as begin -- other declare statements declare @Error int declare @TrCount tinyint -- other set statements set @Error = 0 set @TrCount = @@trancount -- other core/main logic Example1... select @Error = @@error, @RowCount = @@rowcount if (@Error <> 0) goto error -- other core/main logic Example 2... if (@RowCount = 0) begin set @Error = <some sysmessage error#> raiserror (@Error, 16, 1) goto error end -- other core/main logic Example 3... if @Error <> 0 begin raiserror(@Error, 16, 1) goto error end -- should be last statements after processing all other logic if @@trancount > @TrCount commit transaction goto conclude -- other logic... error: if @@trancount > @TrCount rollback transaction conclude: -- anything that needs to be undone like cleanup, drop temp tables, etc. -- set flags need to be reset, for example 'set nocount off' -- prepare output parameters if any -- other xml output for return if any, for example ‘select @Error RetCode for xml raw’ return @Error end go